SELECT MIN(b), MAX(b) FROM tbl WHERE a = 12;
miluje
INDEX(a, b)
oba sloupce v tomto pořadí.
Dotaz hledá v indexu a = 12
, vezme první (a,b)
spárovat a získat MIN(b)
a vezme poslední pár, aby získal MAX(b)
.
Prohlášení o „nahrazení konstantou“ je matoucí, protože zachází příliš hluboko do podrobností o tom, jak nejprve zjistí, jak provést dotaz (což se stane, že dostane min. a max.), pak pokračuje ve vykonání toho, co zbylo dotaz (nic nezůstalo).
Obecněji je optimální index obvykle ten, který začíná všemi WHERE
sloupců ve srovnání s konstantami s =
. Poté se to zkomplikuje, takže mi dovolte dát další tip:
"Pokrývající" index je index, který má všechny sloupce uvedené v SELECT
(a
a b
v mém příkladu).
Pardon, nezdá se mi, že bych byl srozumitelnější než manuál.