Mysql
 sql >> Base de données >  >> RDS >> Mysql

Index MySQL pour MIN et MAX

SELECT MIN(b), MAX(b) FROM tbl WHERE a = 12;

aime

INDEX(a, b)

les deux colonnes, dans cet ordre.

La requête recherche dans l'index a = 12 , saisit le premier (a,b) paire pour obtenir MIN(b) et attrape la dernière paire pour obtenir MAX(b) .

L'instruction sur le "remplacement par une constante" est déroutante car elle va trop loin dans les détails de la façon dont elle détermine d'abord comment effectuer la requête (ce qui arrive à obtenir le min et le max), puis procède à l'exécution de ce qui reste de la requête (il ne reste plus rien).

Plus généralement, l'indice optimal est habituellement celui qui commence par tous les WHERE colonnes par rapport aux constantes avec = . Après cela, cela devient complexe, alors laissez-moi vous donner un autre conseil :

Un index "couvrant" est celui qui a toutes les colonnes mentionnées dans le SELECT (a et b dans mon exemple).

Désolé, je ne semble pas être plus clair que le manuel.