SELECT MIN(b), MAX(b) FROM tbl WHERE a = 12;
ama
INDEX(a, b)
entrambe le colonne, in quest'ordine.
La query cerca nell'indice a = 12
, prende il primo (a,b)
accoppiare per ottenere MIN(b)
e prende l'ultima coppia per ottenere MAX(b)
.
L'affermazione sulla "sostituzione con una costante" è fonte di confusione perché sta andando troppo in profondità nei dettagli di come prima capisce come eseguire la query (che capita per ottenere il minimo e il massimo), quindi procede con l'esecuzione di ciò che resta di la query (non è rimasto nulla).
Più in generale, l'indice ottimale è solitamente uno che inizia con tutto il WHERE
colonne rispetto alle costanti con =
. Dopo di che diventa complesso, quindi lascia che ti dia un altro consiglio:
Un indice di "copertura" è quello che ha tutte le colonne menzionate in SELECT
(a
e b
nel mio esempio).
Mi spiace, non mi sembra di essere più chiaro del manuale.