Feedback

Vielen Dank. Ihr Feedback wurde verschickt.

Schweiz: Diskussionen Datenbanken - Indizes, Diskussions-Foren, Gedankenaustausch, Kontroversen, Meinungen

Forum > Datenbanken > Artikelansicht
Manfred Schmitz


Anmeldung: 24.08.2004
Beiträge: 504
Wohnort:


Betreff: Indizes
Verfasst am: 01.01.1970 01:33

Hallo,

angenommen ich habe eine Tabelle mit

feld 1 integer,
feld 2 integer

Ich habe nun jeweils einen Index auf Feld 1 und einen auf
Feld 2.

Wenn ich nun einen SELECT über beide Felder mache, werden die
Indizes verwendet? Oder brauche ich dort zwingend einen
verschachtelten Index über beide Felder?

Was ist wenn ich einen Index auf der Tabelle auf feld1, feld2
habe und dann einen SELECT über feld2, feld1 mache. Macht
das einen Unterschied?

Gruß,
Voodoo

Antworten
Profil
Priv. Nachricht
Thomas Bimesmeier
Profil von Thomas Bimesmeier


Anmeldung: 05.07.2005
Beiträge: 320
Wohnort: Hösbach


Betreff: Re: Indizes
Verfasst am: 11.07.2005 12:28

Manfred Schmitz schrieb am 01.01.1970 um 01:33:
> Hallo,
>
> angenommen ich habe eine Tabelle mit
>
> feld 1 integer,
> feld 2 integer
>
> Ich habe nun jeweils einen Index auf Feld 1 und einen auf
> Feld 2.
>
> Wenn ich nun einen SELECT über beide Felder mache, werden die
> Indizes verwendet?
>
> Oder brauche ich dort zwingend einen
> verschachtelten Index über beide Felder?

Ob der Index einer Spalte verwendet wird, hängt weniger von der Kombination mit anderen Spalten, sondern vielmehr von der Art der Abfrage ab. Die meisten DB-Systeme verwenden einen Index nicht z.B. bei ungleich-Operationen (WHERE anzahl !='1' - Index auf Anzahl).

> Was ist wenn ich einen Index auf der Tabelle auf feld1, feld2
> habe und dann einen SELECT über feld2, feld1 mache. Macht
> das einen Unterschied?
Nehmen wir ein einfaches Beispiel (extrem vereinfacht):
Feld Wohnort
Feld Nachname

beide indiziert.

Wir suchen nun einen Herrn Müller in Rohrdorf

SELECT * FROM Adressen WHERE Name='Müller' AND Wohnort='Rohrdorf'
liefert zuerst 7,2 Mio. Müller aus 80.000.000 Adressdaten und in diesen wird nach dem Wohnort Rohrdorf gesucht.
80.000.000 + 7.2000.000 = 87.200.000 Suchdatensätze

SELECT * FROM Adressen WHERE Wohnort='Rohrdorf' AND Name='Müller'
liefert zuerst die vielleicht 7000 Einwohner von Rohrdorf aus rund 200.000 Ortsnamen und sucht dort den Namen Müller.

7.000 + 200.000 = 207.000 Suchdatensätze

Indizes sind wichtig, noch wichtiger ist eine intelligente Suche. Dafür ist es wichtig die Datenverteilung zu kennen - oder zu ermitteln.
Antworten
Profil
Priv. Nachricht
Nico Flemming
Profil von Nico Flemming


Premium-Mitglied
Anmeldung: 05.02.2005
Beiträge: 1160
Wohnort: Hamburg

www.webconia.de

Betreff: Re: Indizes
Verfasst am: 11.07.2005 16:14

Performancerelevant ist z.B. auch, die zu speichernden Informationen aufzuteilen.

Stell Dir z.B. ein hochperformanten Internet-Service vor, der über ein Login-System
verfügt. Angenommen Du hast eine Datenbank mit z.B. 10 Millionen Usern.
Da bietet es sich doch an, nicht einen kompletten Userdatensatz (mit Adresse, Bankverbindung,
etc..) in der gleichen Tabelle zu speichern. Beim Login braucht das System keine
Bankverbindung.

Du erstellst also eine Tabelle nur mit den Feldern Username, Passwort, evtl. noch Letztes Login
und Anzahl Logins. Sämtlichen anderen Kram lagerst Du in Sub-Tabellen aus. Schon geht
das Login sehr viel schneller.

Gruß,
Nico

Antworten
Profil
Priv. Nachricht


1

Weitere ähnliche Threads:


freelancermap footer border
Deutschland | Österreich | Schweiz | United Kingdom | USA | Russian Federation | España | Italy | Ukraine | Liechtenstein | Hungary | New Zealand | France | Slovakia | India | United Arab Emirates
Themenrelevante Websites :