Sobes.tech
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_cost kan 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.