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 в моя пример).
Съжалявам, изглежда не съм по-ясен от ръководството.