Feedback

Thank you. Your feedback has been sent.

New Zealand: Discussions Datenbanken - Indizes, Discussions, exchange of ideas, controversies, opinions

Forum > Datenbanken > Thread
Manfred Schmitz


Date of registration: 24.08.2004
Postings: 504
City:


Subject: Indizes
Posted on: 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

Reply
View profile
Private message
Thomas Bimesmeier
Profile from Thomas Bimesmeier


Date of registration: 05.07.2005
Postings: 320
City: Hösbach


Subject: Re: Indizes
Posted on: 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.
Reply
View profile
Private message
Nico Flemming
Profile from Nico Flemming


Premium member
Date of registration: 05.02.2005
Postings: 1160
City: Hamburg

www.webconia.de

Subject: Re: Indizes
Posted on: 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

Reply
View profile
Private message


1

Similar 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
Theme related Websites :