Aké dôvody môžu viesť k tomu, že index v databáze nebude použitý na vykonanie dotazu?
sobes.tech AI
Odpoveď od AI
Index v databáze môže byť z niekoľkých dôvodov nepoužiteľný na vykonanie dotazu:
-
Nízka selektivita indexu: ak index pokrýva stĺpce s veľkým počtom opakujúcich sa hodnôt, optimalizátor môže rozhodnúť, že rýchlejšie je úplné prehľadanie tabuľky.
-
Použitie funkcií alebo operácií na indexovanom stĺpci: napríklad volanie funkcie na stĺpci (
WHERE LOWER(name) = 'john') môže zabrániť použitiu indexu. -
Dotaz s podmienkami, ktoré nie sú pokryté indexom: ak dotaz používa stĺpce, ktoré nie sú zahrnuté v indexe, alebo podmienky neodpovedajú štruktúre indexu.
-
Malá veľkosť tabuľky: pre malé tabuľky môže optimalizátor zvoliť úplné prehľadanie, pretože je rýchlejšie.
-
Chýbajúce alebo zastarané štatistiky: optimalizátor rozhoduje na základe štatistík; ak sú zastarané, index nemusí byť použitý.
-
Použitie operátora LIKE s vzorom začínajúcim hviezdičkou (
LIKE '%abc'), čo bráni použitiu indexu. -
Dotazy s OR, ktoré nemôžu byť efektívne pokryté indexom.
Porozumenie týmto dôvodom pomáha optimalizovať dotazy a štruktúru indexov.