Frank (no reg): Mysql: Index über alle Felder von WHERE-Anfragen?

Beitrag lesen

Hallo,

wer weiss? Mach doch folgendes:

  1. Führe die Abfrage ganz ohne Indices aus, schau dir den Ausführungsplan an (SHOWPLAN oder so)
  2. Erzeuge einen Index über die erste Spalte (varchar)
  3. Führe die Abfrage aus, schau dir den Ausführungsplan an (SHOWPLAN oder so) und vergleiche
  4. Erzeuge einen Index auch über die zweite Spalte (int)
  5. Führe die Abfrage aus, schau dir den Ausführungsplan an (SHOWPLAN oder so) und vergleiche
  6. Drehe die Suchargumente um in der Abfrage, Führe die Abfrage aus, schau dir den Ausführungsplan an (SHOWPLAN oder so) und vergleiche
  7. Lösche die bestehenden Indices, Erzeuge einen zusammengesetzten Index über beide Spalten (zuerst varchar, dann int feld)
  8. Führe die Abfrage aus, schau dir den Ausführungsplan an (SHOWPLAN oder so) und vergleiche
  9. Drehe die Suchargumente um in der Abfrage, Führe die Abfrage aus, schau dir den Ausführungsplan an (SHOWPLAN oder so) und vergleiche
  10. Lösche die bestehenden Indices, Erzeuge einen zusammengesetzten Index über beide Spalten (zuerst int, dann varchar feld)
  11. Führe die Abfrage aus, schau dir den Ausführungsplan an (SHOWPLAN oder so) und vergleiche
  12. Drehe die Suchargumente um in der Abfrage, Führe die Abfrage aus, schau dir den Ausführungsplan an (SHOWPLAN oder so) und vergleiche

Und dann ziehe aus den Vergleichen deine Lehren.

Welches der Felder ist signifikanter vom Inhalt? Vielleicht reicht es schon, einen Index nur über dieses Feld zu machen und es als Suchargument an der richtigen (ersten) Stelle zu verwenden.

Gruss
Frank