Merci à Guillaume pour sa question :
"J'ai une clé de partitionnement sur une colonne text mais mon outil de génération de code applique des upper sur la colonne et les partitions ne sont pas éliminées. Est-ce que CITEXT serait une solution ?"
Réponse :
Non, ce n'est pas la solution. En l'occurrence, ça ne fonctionne pas (pas de partition pruning, testé avec PostgreSQL 17.6). C'est facile à montrer en se basant sur https://pgphil.ovh/partition_brin_index_10_devel_01.php, en faisant d'id_prod une colonne citext.
Cependant, même si ça fonctionnait, ça ne serait pas la bonne solution. Il faut vraiment utiliser la colonne brute constituant la clé de partitionnement, sans appliquer de fonction sur cette colonne dans les clauses de filtrage, et même idéalement, comparer à une constante ou un paramètre et pas à une fonction. On veut vraiment éliminer les partitions à ne pas considérer le plus en amont dans le processus de planification de la requête ; appliquer une fonction sur la colonne est très éloigné de l'optimum.
upper, lower et clés de partitionnement
-
Phil
- Administrateur du site
- Messages : 305
- Enregistré le : mar. 1 sept. 2015 00:38
- Localisation : France
- Contact :
upper, lower et clés de partitionnement
Cdlt. Phil - pgphil.ovh