1.5k Aufrufe
Gefragt in Datenbanken von
Hallo,

ich habe eine Frage, wie MySQL Indizes verwendet:

Kann pro Tabelle in einer Abfrage nur ein Index verwendet werden?
D.h. ein normales Query ohne Join verwendet maximal einen Index,
wenn ich zwei Tabellen joine, maximal zwei?

Ich konnte weder per Suche noch in der Dokumentation etwas
konkretes finden, allerdings glaube ich, dass alles darauf hindeutet,
dass die Aussage korrekt ist.

Ein Arbeitskollege von mir behauptet das Gegenteil: MySQL könne
beliebig viele Indizes in einer Abfrage verwenden.

Ich habe das mal mit EXPLAIN und USE/FORCE index probiert,
konnte aber niemals erreichen, dass mehr als einer verwendet wird.

Kann da jemand mehr zu sagen?

Gruß Gast

2 Antworten

0 Punkte
Beantwortet von halfstone Profi (18.1k Punkte)
Hallo Gast,

als ich mit noch mit genau dem Thema auseinandergesetzt habe war ich sehr überrascht, dass MYSQL damals (Version 5) immer nur einen Index pro Abfrage benutzt hat. Noch mehr war ich überrascht als ich merkte, dass es nicht immer der optimale Index war.

Mit genau den Tools "EXPLAIN und USE/FORCE" habe ich dann einige Abfragen im Supportnet optimiert und war sehr erstaunt darüber wie viel schneller MYSQL arbeiten kann wenn man die Abfragen auf den Indizes manuell optimiert (also den Index benutzen bei dem am meisten Datensätzen bei der Abfrage rausfallen).

In der damaligen Docu habe ich nur Hinweise darauf gefunden, dass in den zukünftigen Versionen das nicht mehr so sein soll und man durchaus mehrere Indizes in einer Abfrage benutzen können soll.

Wie da der aktuelle Stand ist weiß ich allerdings nicht.

Gruß Fabian
0 Punkte
Beantwortet von
Vielen Dank für die Antwort!

Das hat mir weitergeholfen.
...