dedlfix: MySQL: Auswirkung von Indexen auf die Abfrage-Performance

Beitrag lesen

Hi!

wann mach es sinn einen Index für jedes Feld zu setzen

Selten. Jeder Index bringt nicht nur Vorteile beim Suchen sondern kostet auch beim Datenändern. Indexe sind nur dann sinnvoll, wenn sie auch benutzt werden, also wenn Abfragen Werte in den indexierten Feldern suchen.

und wann sollte man den Index von zwei Spalten kombinieren?

Wenn du Abfragen hast, die anhand der beiden Spalten eine Auswahl treffen.

Allerdings solltest du immer mit EXPLAIN prüfen, ob die Indexe oder wenigstens einer auch verwendet werden. Zudem ist die Verwendung auch von der Anzahl der vorhandenen Daten abhängig. Wenn ein Index bereits die Datenmenge sehr weit eingedampft hat, lohnt sich die Verwendung eines zweiten Index nicht und er wird ignoriert. Welcher von beiden verwendet wird, hängt davon ab, wie MySQL denkt, welcher Index mehr einschränkend ist. Wenn jedoch noch genügend Daten übrigbleiben, kann auch ein zweiter Index herangezogen werden. Kombinationen bringen vor allem in solchen Szenarien was, wenn beide Indexe jeweils einzeln nicht weit genug einschränken.

Das sind alles nur Richtlinien. EXPLAIN sollte dein wichtigstes Werkzeug bei der Performance-Analyse werden. Das Ergebnis ist übrigens nicht feststehend sondern kann sich mit Datenmenge und abzufragenden Werten ändern. Wenn nach "a" in Feld1 gesucht wird, und das Ergebnis 10 Datensätze sind, wird der Index für Feld2 nicht verwendet. Allerdings kann die Suche nach "b" in Feld1 eine ganze Menge mehr Ergebnisse finden und dann lohnt sich der Feld2-Index wieder (falls im Feld2 auch wieder viele Datensätze zur befragten Bedingung zu finden sind).

Lo!