Sobes.tech
Junior — Middle

Mis võib põhjustada seda, et PostgreSQL ei kasuta indeksit konkreetse välja otsimisel?

sobes.tech AI

Vastus AI-lt

PostgreSQL ei pruugi kasutada indeksi teatud välja otsimisel mitmel põhjusel:

  • Väike valikuvõimekusega päring: kui otsingutingimus tagastab suure protsendi ridadest, võib planeerija valida järjestusliku skaneerimise, kuna see on tõhusam.
  • Andmetüüpide või operatsioonide mitteühilduvus indeksiga: näiteks funktsioonide või operatsioonide kasutamine, mis ei toeta indeksit (näiteks LIKE '%pattern') või andmetüüpide sobimatus.
  • Statistika puudumine või vananenud statistika: kui tabeli statistika pole ajakohane (ANALYZE), võib planeerija teha vale otsuse.
  • Väljendite kasutamine, mida indeks ei kata: näiteks arvutatud välja otsimine ilma sobiva funktsionaalse indeksita.
  • Seadistuse parameetrid: näiteks liiga kõrge random_page_cost väärtus võib mõjutada plaani valikut.

Näide: kui teil on indeks väljal name, kuid päring kasutab WHERE LOWER(name) = 'abc', ja indeks ei ole funktsionaalne LOWER(name)-i puhul, siis indeksit ei kasutata.