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):
Lo!