SELECT MIN(b), MAX(b) FROM tbl WHERE a = 12;
kocha
INDEX(a, b)
obie kolumny, w tej kolejności.
Zapytanie szuka w indeksie dla a = 12
, chwyta pierwszy (a,b)
sparuj, aby uzyskać MIN(b)
i chwyta ostatnią parę, aby uzyskać MAX(b)
.
Stwierdzenie o „zastępowaniu stałą” jest mylące, ponieważ zagłębia się w szczegóły tego, jak najpierw dowiaduje się, jak wykonać zapytanie (co zdarza się, aby uzyskać minimum i maksimum), a następnie przechodzi do wykonania tego, co pozostało z zapytanie (nic nie zostało).
Mówiąc bardziej ogólnie, optymalny indeks to zazwyczaj taki, który zaczyna się od wszystkich WHERE
kolumny w porównaniu do stałych z =
. Potem robi się skomplikowana, więc pozwól, że dam kolejną wskazówkę:
Indeks „pokrywający” to taki, który zawiera wszystkie kolumny wymienione w SELECT
(a
i b
w moim przykładzie).
Przepraszam, wydaje mi się, że nie jest to bardziej zrozumiałe niż instrukcja.