dedlfix: Welchen Index zur Datenbankbeschleunigung?

Beitrag lesen

Hi!

MySQL nutzt nur genau einen Index pro Tabelle - und der Optimizer wählt unter den verfügbaren Indices einen "geeigneten" aus. Das ist im Idealfall der Index, der am stärksten die Datenmenge einschränkt.

Das kann ich nicht bestätigen. Ich habe da eine Tabelle mit 14000 Datensätzen und unter anderem zwei Indexen mit je einer Kardinalität von 31 und circa 4700. Diese Abfrage

EXPLAIN SELECT * FROM Transaction WHERE ID\_Account=31 AND ID\_Payee=96

bringt mir dieses Ergebnis:

id  select_type  table       type        possible_keys       key                 key_len  ref  rows  Extra
1   SIMPLE       Transaction index_merge ID_Account,ID_Payee ID_Payee,ID_Account 5,5      NULL 73    Using intersect(ID_Payee,ID_Account); Using where

Daraus entnehme ich, dass MySQL durchaus auch zwei Indexe verwendet. Das Handbuch spricht auch von "normally" nicht von "always" (zweiter Listenpunkt):

If there is a choice between multiple indexes, MySQL normally uses the index that finds the smallest number of rows (the most selective index).

Lo!