Problème d'index partiel sur PostgreSQL : erreur 'WHERE condition not used in index'

MySQL, PostgreSQL, requetes, optimisation
la_scriptkid
Messages : 38
Inscription : dim. mai 25, 2025 7:24 pm

Problème d'index partiel sur PostgreSQL : erreur 'WHERE condition not used in index'

Message par la_scriptkid »

Help ! Je crée un index partiel avec CREATE INDEX idx_actif ON clients(email) WHERE statut='actif' mais le planner ne l'utilise jamais. EXPLAIN montre un seq scan... Version PostgreSQL 14.7.
antoine06
Messages : 239
Inscription : sam. août 12, 2023 7:24 pm

Re: Problème d'index partiel sur PostgreSQL : erreur 'WHERE condition not used in index'

Message par antoine06 »

As-tu bien analysé la table après création de l'index ? Il faut faire un ANALYZE pour que les stats soient à jour.
Ex-Windows, jamais regrette le switch
la_scriptkid
Messages : 38
Inscription : dim. mai 25, 2025 7:24 pm

Re: Problème d'index partiel sur PostgreSQL : erreur 'WHERE condition not used in index'

Message par la_scriptkid »

Oui, fait, et même un VACUUM ANALYZE. Le problème persiste. J'ai seulement 500K lignes, dont 10% de 'actif'.
antoine1974
Messages : 27
Inscription : mar. avr. 30, 2024 7:25 pm

Re: Problème d'index partiel sur PostgreSQL : erreur 'WHERE condition not used in index'

Message par antoine1974 »

C'est probablement un seuil de cost estimation. Essaye de forcer avec SET enable_seqscan=OFF pour tester. Et vérifie que ta condition WHERE est EXACTEMENT la même que dans l'index (sensible à la casse !).
Ryzen 7 5800X + RTX 3070, full custom loop
la_scriptkid
Messages : 38
Inscription : dim. mai 25, 2025 7:24 pm

Re: Problème d'index partiel sur PostgreSQL : erreur 'WHERE condition not used in index'

Message par la_scriptkid »

BINGO ! J'avais un WHERE STATUT='actif' dans ma requête alors que l'index était sur statut='actif'. PostgreSQL est case-sensitive sur les noms de colonnes dans ce cas. Merci !
Répondre