Vinzenz Mai: MySQL: Auswirkung von Indexen auf die Abfrage-Performance

Beitrag lesen

Hallo,

Meine Frage ist aber, soll ich für jede Spalte einen Index anlegen oder kann ich diese kombinieren. Bzw. wo ist der Vorteil/Nachteil von kombinierten Indexes

*seufz*
Wozu habe ich mir gestern für Dich soviel Arbeit gemacht?

Wir gehen mal von folgender beispiel Tabellstruktur aus

artikelnr | available | produktname

1         | 1         | artikel 1
2         | 1         | artikel 2
3         | 0         | artikel 3

In diesem Fall - wie würde ich am besten den Index anlegen?!?

Einfache Antwort: Bei sowenig Daten benötigt man überhaupt keinen Index.

ADD INDEX INDEX ( artikelnr , available )
oder
ADD INDEX INDEX ( artikelnr  )
ADD INDEX INDEX ( available )

Die Tabelle wird wie folgt abgefragt
SELECT * FROM artikel WHERE available='1'
SELECT * FROM artikel WHERE available='1' AND artikelnr='2'

ok, Du hast in Wirklichkeit deutlich mehr Daten in Deiner Tabelle.
Also mach das, was ich gestern gemacht habe: Teste es durch und nutze endlich selbst EXPLAIN, um herauszufinden, welcher Index bzw. welche Indexe genutzt werden.

Ein Index auf available wird wahrscheinlich höchst selten genutzt werden, weil er - wie dedlfix schon ausgeführt hat - die Menge der Datensätze nur in geringem Maße einschränken kann.

Überlege Dir bitte selbst, welches Kriterium bei Deiner zweiten Abfrage am stärksten einschränkt. Ist das so schwer?

Freundliche Grüße

Vinzenz