Mysql
 sql >> Database >  >> RDS >> Mysql

Indice MySQL per MIN e MAX

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.