Sobes.tech
Junior — Middle

Šta može dovesti do toga da PostgreSQL ne koristi indeks prilikom pretraživanja po određenom polju?

sobes.tech АИ

Одговор од АИ

PostgreSQL može iz raznih razloga ne koristiti indeks prilikom pretraživanja po određenom polju:

  • Niska selektivnost upita: ako uslov pretraživanja vraća veliki procenat redova, planer može odabrati sekvencijalno skeniranje, jer je efikasnije.
  • Tipovi podataka ili operacije koje nisu kompatibilne sa indeksom: na primer, korišćenje funkcija ili operacija koje ne podržavaju indeks (kao što je LIKE '%pattern') ili nesklad tipova podataka.
  • Nedostatak statistika ili zastarele statistike: ako statistike tabele nisu ažurirane (ANALYZE), planer može doneti pogrešnu odluku.
  • Korišćenje izraza koji nisu pokriveni indeksom: na primer, pretraživanje po izračunatom polju bez odgovarajućeg funkcionalnog indeksa.
  • Parametri konfiguracije: na primer, previsoka vrednost random_page_cost može uticati na izbor plana.

Primer: ako imate indeks na polju name, ali upit koristi WHERE LOWER(name) = 'abc', a indeks nije funkcionalan na LOWER(name), indeks neće biti korišćen.