SELECT MIN(b), MAX(b) FROM tbl WHERE a = 12;
O amor é
INDEX(a, b)
ambas as colunas, nessa ordem.
A consulta procura no índice por
a = 12
, pega o primeiro (a,b)
par para obter MIN(b)
e pega o último par para obter MAX(b)
. A declaração sobre "substituir por uma constante" é confusa porque está se aprofundando demais nos detalhes de como primeiro descobre como executar a consulta (que por acaso obtém o mínimo e o máximo) e prossegue para executar o que resta de a consulta (nada é deixado).
De maneira mais geral, o índice ideal é geralmente um que começa com todos os
WHERE
colunas comparadas com constantes com =
. Depois disso fica complexo, então deixe-me dar outra dica:Um índice de "cobertura" é aquele que possui todas as colunas mencionadas no
SELECT
(a
e b
no meu exemplo). Desculpe, eu não pareço ser mais claro do que o manual.