To je trochu obtížné vysvětlit.
Dotaz, který používá index, jej používá, protože index je "krycí" index. To znamená, že všechny sloupce v indexu jsou v dotazu. Jediná část indexu, která se skutečně používá efektivně, je podmínka na latitude
.
Normálně by měl krycí index pouze sloupce uvedené v dotazu. Primární klíč se však používá k odkazování na záznamy, takže předpokládám, že users.Id
je primární klíč na stole. A index se hledá na platné hodnoty latitude
.
Dotaz, který nepoužívá index, jej nepoužívá ze dvou důvodů. Za prvé, podmínky na sloupcích jsou nerovnosti. Vyhledávání indexu může používat pouze podmínky rovnosti a jednu nerovnost. To znamená, že index lze použít pouze pro latitude
ve své nejúčinnější metodě. Za druhé, další sloupce v dotazu vyžadují přechod na datovou stránku.
Jinými slovy, optimalizátor ve skutečnosti říká:"Proč se obtěžovat jít do indexu, prohledat index a pak skenovat datové stránky? Místo toho mohu jen skenovat datové stránky a získat vše najednou."
Vaše další otázka je nepochybně:"Ale jak mohu svůj dotaz zrychlit?" Můj návrh by byl prozkoumat prostorové indexy .