Hallo,
eine Frage, die ich trotz MySQL-Doku noch nicht ganz kapiert habe: Muss ich einen INDEX nur einmal beim Erstellen einer Tabelle anlegen und er bleibt dann automatisch aktuell?
Ja, jedesmal, wenn Daten eingefügt werden, werden die Indexdateien aktualisiert. Deshalb wird das Einfügen von Daten auch langsamer, je mehr Indexe es gibt. Dafür wird das Suchen in und Sortieren nach indizierten Spalten schneller.
Oder muss ich, wenn ich etwas in die Datenbank eintrage, auch den INDEX aktualisieren?
Nein, das mach das DBMS von selbst.
Und noch was: ich habe mal einen INDEX auf eine Spalte angelegt, die mit WHERE abgefragt wird und mir die Microtime vor und nach der DB-Abfrage ausgeben lassen: mit dem Index ist es auch nicht schneller geworden (die datenbank hat ca. 3000 Einträge). Hab ich da was falsch gemacht?
Die erste Frage wäre, wird der Index überhaupt genutzt? Bei ... WHERE name LIKE "%a%" kann er nämlich nicht genutzt werden. Bei ... WHERE name LIKE "a%" dagegen wird er genutzt.
Ansonsten kommt es darauf an, was Du da überhaupt misst. Meist dauern die Abfragen selbst nur einige zehntel Sekunden. Die Hauptzeit verbraucht das PHP-Script mit dem Erstellen des Arrays für die Ergebnismenge. Diese Zeit misst Du mit, weil beides in einer Anweisung erfolgt.
viele Grüße
Axel