Junior — Middle
Wat kan ervoor zorgen dat PostgreSQL geen index gebruikt bij het uitvoeren van een zoekopdracht op een bepaald veld?
sobes.tech AI
Antwoord van AI
PostgreSQL kan mogelijk geen index gebruiken bij het zoeken op een bepaald veld om verschillende redenen:
- Lage selectiviteit van de query: als de zoekvoorwaarde een groot percentage rijen retourneert, kan de planner kiezen voor een sequentie scan omdat dat efficiënter is.
- Datatypes of operaties die niet compatibel zijn met het index: bijvoorbeeld het gebruik van functies of operaties die geen index ondersteunen (zoals
LIKE '%pattern') of incompatibiliteit van datatypes. - Ontbreken van statistieken of verouderde statistieken: als de tabelstatistieken niet up-to-date zijn (
ANALYZE), kan de planner een verkeerde beslissing nemen. - Gebruik van uitdrukkingen die niet door het index worden gedekt: bijvoorbeeld zoeken op een berekend veld zonder bijpassende functionele index.
- Configuratieparameters: bijvoorbeeld een te hoge waarde van
random_page_costkan de keuze van het plan beïnvloeden.
Voorbeeld: als je een index hebt op het veld name, maar de query gebruikt WHERE LOWER(name) = 'abc', en de index is niet functioneel op LOWER(name), wordt de index niet gebruikt.