SELECT MIN(b), MAX(b) FROM tbl WHERE a = 12;
обича
INDEX(a, b)
и двете колони в този ред.
Заявката търси в индекса a = 12
, грабва първия (a,b)
двойка, за да получите MIN(b)
и грабва последната двойка, за да получи MAX(b)
.
Изявлението за "замяна с константа" е объркващо, защото навлиза твърде дълбоко в подробностите за това как първо измисля как да изпълни заявката (което се случва, за да получи минимума и максимума), след което пристъпва към изпълнение на това, което е останало от заявката (не е останало нищо).
По-общо казано, оптималният индекс е обикновено такъв, който започва с всички WHERE
колони в сравнение с константи с =
. След това става сложно, така че позволете ми да дам още един съвет:
„Покриващ“ индекс е този, който има всички колони, споменати в SELECT
(a
и b
в моя пример).
Съжалявам, изглежда не съм по-ясен от ръководството.