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