Junior — Middle
Co může způsobit, že PostgreSQL nebude používat index při hledání podle určitého pole?
sobes.tech AI
Odpověď od AI
PostgreSQL může z různých důvodů nepoužívat index při hledání podle určitého pole:
- Nízká selektivita dotazu: pokud podmínka hledání vrací velké procento řádků, plánovač může zvolit sekvenční skenování, protože je efektivnější.
- Datové typy nebo operace, které nejsou kompatibilní s indexem: například použití funkcí nebo operací, které index nepodporují (například
LIKE '%pattern') nebo nesoulad typů dat. - Chybějící nebo zastaralé statistiky: pokud statistiky tabulky nejsou aktuální (
ANALYZE), může plánovač učinit nesprávné rozhodnutí. - Použití výrazů, které nejsou pokryty indexem: například hledání podle vypočítaného pole bez odpovídajícího funkčního indexu.
- Konfigurační parametry: například příliš vysoká hodnota
random_page_costmůže ovlivnit volbu plánu.
Příklad: pokud máte index na poli name, ale dotaz používá WHERE LOWER(name) = 'abc', a index není funkční na LOWER(name), index nebude použit.