Auch wenn mysql-Abfragen augenscheinlich schnell aussehen, sollte man diese doch einfach mal beobachten.
Mit erhöhtem Trafficaufkommen und steigender Anzahl der Datensätze, kann sich ein richtig gesetzter Index schon ganz schön auf die Geschwindigkeit des Mysql-Servers auswirken.
Für den einfachten Test führt man sein SQL-Statement einfach mal mit dem phpMyAdmin aus.
Das zeigt schon einmal die Dauer der Abfragezeit an.
Beispiel:
SELECT *
FROM `TABLE`
WHERE `name` LIKE ‘%test%’
GROUP BY `name`
LIMIT 0 , 30
Danach setzt man vor das Statement einfach mal ein EXPLAIN.
Beispiel:
EXPLAIN SELECT *
FROM `TABLE`
WHERE `name` LIKE ‘%test%’
GROUP BY `name`
LIMIT 0 , 30
Kommt dann so etwas zum Vorschein, hat man höchstwahrscheinlich Optimierungsbedarf:
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
|---|
| 1 | SIMPLE | TABLE | ALL | NULL | NULL | NULL | NULL | 8179 | Using where; Using temporary; Using filesort |
Nun setze ich mal einen einfachen INDEX (auch mit phpMyAdmin möglich) auf das Feld name und schon sieht die Sache etwas anders aus:
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
|---|
| 1 | SIMPLE | TABLE | index | NULL | city | 768 | NULL | 8179 | Using where |
Und die Abfrage verschnellert sich um einvielfaches!
Je nach SQL und Anwendungsgebiet variiert natürlich der Typ des Indexes, der benutzt werden muss. Eventuell ist auch ein Index über mehrere Spalten sinnvoll.
Wer hier nicht weiß, was er tut, kann ruhig einmal ausprobieren, wie sich ein solcher Index auf die Geschwindigkeit auswirkt.
Richtig interessant wird es natürlich bei Joins über mehrere Tabellen