Sobes.tech
Junior — Middle

Qu'est-ce qui peut faire en sorte que PostgreSQL n'utilise pas d'index lors de la recherche sur un champ spécifique?

sobes.tech IA

Réponse de l'IA

PostgreSQL peut ne pas utiliser d'index lors de la recherche sur un champ spécifique pour plusieurs raisons:

  • Faible sélectivité de la requête : si la condition de recherche retourne un pourcentage élevé de lignes, le planificateur peut choisir une lecture séquentielle, car elle est plus efficace.
  • Types de données ou opérations incompatibles avec l'index : par exemple, l'utilisation de fonctions ou d'opérations qui ne supportent pas l'index (comme LIKE '%pattern') ou une incompatibilité de types de données.
  • Absence de statistiques ou statistiques obsolètes : si les statistiques de la table ne sont pas à jour (ANALYZE), le planificateur peut prendre une mauvaise décision.
  • Utilisation d'expressions non couvertes par l'index : par exemple, rechercher sur un champ calculé sans index fonctionnel correspondant.
  • Paramètres de configuration : par exemple, une valeur trop élevée de random_page_cost peut influencer le choix du plan.

Exemple : si vous avez un index sur le champ name, mais que la requête utilise WHERE LOWER(name) = 'abc', et que l'index n'est pas fonctionnel sur LOWER(name), l'index ne sera pas utilisé.