Sobes.tech
Junior — Middle

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.