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.