Tom-1986: MySQL - Indizes richtig setzen

Hallo zusammen,

eine Frage zum "richtigen setzen" von Indizes in MySQL (Version 5.x) bei einer Tabelle mit größeren Datenmengen, welche für Suchen benötigt wird.

Es liegt eine Tabelle mit insgesamt 12 für eine Suche relevanten Spalten (Integer + Varchar) vor, die Tabelle hat insgesamt 20 Spalten. Der PK (autoincrement) ist für die Suche nicht relevant.

Die 12 Spalten beinhalten Informationen wie Beginn und Ende einer Veranstaltung, PLZ, Ort und Land usw..

Die Suche ist so aufgebaut, daß der Nutzer nicht alle Suchkriterien angeben muss. Es können also sowohl sehr genaue Suchabfragen entstehen, die über alle 12 Spalten gehen, als aber auch Abfragen, die sich lediglich auf ein oder zwei Spalten beziehen.

Ist es nun sinnvoller

a) einen Index über alle 12 Spalten zu setzen, die für die Suche in Frage kommen

b) für jede Spalte einen eigenen Index zu erzeugen

c) die Indizes "logisch" zu gruppieren (z.B. PLZ, Ort und Land in einen Index, Beginn und Ende in Index usw.)

--

Zwar habe ich hier im Forum einige ähnliche Fragen gefunden und auch Google hält so einige Ergebnisse bereit, doch ich würde mich sehr freuen, wenn Ihr mich in diesem Punkt ein wenig unterstützen könntet.

Vielen Dank vorab!

Gruß,
Tom

  1. moin,

    a) einen Index über alle 12 Spalten zu setzen, die für die Suche in Frage kommen

    nicht sinnvoll, da die reihenfolge der spalten für den zugriff eine rolle spielt

    b) für jede Spalte einen eigenen Index zu erzeugen

    bedingt

    c) die Indizes "logisch" zu gruppieren (z.B. PLZ, Ort und Land in einen Index, Beginn und Ende in Index usw.)

    bedingt

    ist leider nicht so einfach zu beantworten, es hängt leider immer von unterschiedlichen faktoren ab, zum beispiel kardinalität der spalten, etc. indexe zu gruppieren hat vorteile, wenn man denn tatsächlich auch über sie spalten sucht, über die gruppiert wurde. und auch da spielt die reihenfolge eine rolle, welche spalte auch immer vorne steht, dafür braucht zum beispiel kein extra single index mehr angelegt werden. ABER das problem besteht in der kombinationsmöglichkeiten deiner 12 spalten. du kannst nicht alle fälle mit den zusammengesetzen indexen für eine optimale suche abbilden. höchstwahrscheinlich wird es wohl ein mix sein.

    Ilja

    1. Hallo Ilja,

      vielen Dank für die Antwort und die Unterstützung!

      Gruß,
      Tom