Mailinglisten-Archive |
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
php::bar PHP Wiki - Listenarchive