Vinzenz Mai: mysql-Optimierung Indexierung

Beitrag lesen

Hallo

habe halt bei der mysql manula nachgelesen und im großen wieten www gesucht, aber immer nicht weiter als der ertse absatz gekommen, da schon der unverständlich für mich war und schon zuweit in die materie einging, von der ich keinerlei vorahnung habe.

ich zitiere aus dem von Hamstar verlinkten MySQL-Handbuch:

<zitat>
  Alle MySQL-Datentypen lassen sich indizieren. Die Verwendung von Indizes
  der relevanten Spalten ist die beste Möglichkeit, die Leistung von
  SELECT-Operationen zu optimieren.
</zitat>

Wenn Du diesen Absatz bereits nicht verstehst, dann weiß ich nicht, wie wir Dir hier weiterhelfen können.

ab wann braucht man wohl so ne indexierung?

Es ist dann sinnvoll, einen Index auf eine Spalte zu setzen, wenn Du häufig Suchoperationen auf dieser Spalte hast oder häufig nach dieser Spalte sortierst.

oder ist es immer sinnvoll?

Nein. Wären Indexe stets sinnvoll, so würden sie bereits automatisch angelegt. Indexe verlangsamen Einfüge- und Löschoperationen, sowie Änderungen bei Werten der indexierten Spalte. Einen Index zu pflegen ist eben zusätzlicher Aufwand. Ob sich der Aufwand lohnt, das läßt sich nicht allgemein sagen, nur im speziellen Fall.

Was bringt ein Index?

Im folgenden vereinfache ich die Problemstellung.
Stell Dir folgenden Fall vor: Du hast 1000 Datensätze, davon benötigst Du einen bestimmten, mit einem bestimmten Wert in der Suchspalte. Ohne Index benötigst Du im Durchschnitt 500 Suchoperationen, um den Datensatz zu finden, mit Index (ich vereinfache hier auf die binäre Suche und einen eindeutigen Index) hast Du den gewünschten Datensatz bereits mit 10 Suchoperationen gefunden.

Bei 1 Million Datensätze benötigst Du ohne Index im Mittel 500.000 Suchoperationen, mit Index gerade einmal 100, bei 1 Milliarde Datensätze ohne Index im Mittel 500.000.000 Operationen, mit Index nur 1.000. Erkennst Du das Potential, das in einem Index steckt.

Noch größer ist der Unterschied beim Sortieren :-)

Ein Beispiel dafür, wann sich ein Index definitiv nicht lohnt:

Bei Spalten, die viele gleiche Werte enthalten, z.B. in einer Personenliste die Kennzeichnung des Geschlechts, lohnt sich hingegen ein Index nicht.

Freundliche Grüße

Vinzenz