C'est une fonctionnalité raisonnable . La nature d'une requête dynamique est qu'elle change sa structure d'un appel à l'autre.
Si vous souhaitez appeler la même requête à plusieurs reprises (éventuellement avec des paramètres différents), utilisez des instructions préparées :
Ou utilisez du code SQL simple (non dynamique) dans les fonctions plpgsql, celles-ci sont également traitées comme des instructions préparées.
Dans votre cas , il serait peut-être préférable de PREPARE
requêtes dynamiquement. Nous avons eu un cas très similaire ici :
De plus, c'est extrêmement rare qu'une requête passe 1,4 seconde pour la planification et seulement 0,1 seconde pour l'exécution. Peut-être vaut-il la peine d'être examiné. Il peut y avoir des moyens d'optimiser. Comme avec join_collapse_limit
:
- Exemple de requête pour afficher l'erreur d'estimation de cardinalité dans PostgreSQL
- A : Recherche en texte intégral lente en raison d'estimations de lignes extrêmement inexactes
Connexe :