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_costvää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.