phpbar.de logo

Mailinglisten-Archive

Re: INDEX
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: INDEX



Thomas Feyrer schrieb am Dienstag, den 10. August 1999:
> für was ist eigentlich ein INDEX in einer Tabelle nützlich?

Die bisherigen Antworten waren leider nicht so ganz treffend ...

Zitat aus dem MySQL-Handbuch, Kapitel "7.2.9 Column indexes":
| All MySQL column types can be indexed except BLOB and TEXT types.
| Use of indexes on the relevant columns is the best way to improve
| the performance of SELECT operations.

_Der_ Hauptzweck von Indexen ist es, Anfragen schneller zu machen.

Hintergrund ist, daß in relationalen Datenbanken die Datensätze einer
Tabelle prinzipiell ungeordnet gespeichert sind (quasi zufällig,
abhängig von der konkreten Implementierung des DBMS, die sich
jederzeit ändern kann, und der konkreten Reihenfolge, wie Daten
eingefügt wurden.).

Beispieltabelle:          Beispiel-Anfrage:

    Name    Vorname          SELECT * FROM personen WHERE Vorname='Thomas'
    ------  -------
#1  Feyrer  Thomas
#2  Stepken Guido
#3  Ramsch  Martin
#4  Rauh    Thomas
#5  Haneke  Elmar
#6  Maier   Timo          (Die Nummern sind nur zur Erklärung!)

_Ohne_ einen Index muß MySQL alle Datensätze durchsuchen, vom ersten
bis zum letzten, und jedesmal nachsehen, ob Vorname='Thomas'.

Ein Index auf Vorname bedeutet prinzipiell, daß sich MySQL intern eine
_sortierte_ Liste dieser Art zusammenbaut:

Elmar  --> #5
Guido  --> #2
Martin --> #3 
Thomas --> #1 #4
Timo   --> #6

Da die Liste sortiert ist, kann MySQL hier ganz schnell 'Thomas'
finden und weiß dann sofort, welche Datensätze gebraucht werden.

Ein UNIQUE-Index ist übrigens einfach einer, wo rechts nur genau
_eine_ Datensatznummer stehen darf.

Da es Arbeit kostet, bei INSERT, UPDATE und DELETE die betroffenen
Indexe zu aktualisieren (muß ja immer zu den eigentlichen
Tabellendaten passen), _verlangsamen_ Indexe diese Operationen.
Nur SELECT wird schnell - das aber teils drastisch!

Ciao,
  Martin
-- 
Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://home.pages.de/~ramsch/ >
PGP KeyID=0xE8EF4F75 FiPr=52 44 5E F3 B0 B1 38 26  E4 EC 80 58 7B 31 3A D7

---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive