3 votes

Comment expliquer une requête dans PostgreSQL 8.3 qui a des variables liées (bind variables)

Je dois expliquer une instruction SQL générée par une application dans PostgreSQL 8.3. J'ai capturé l'instruction SQL dans le journal mais elle comporte beaucoup de variables liées. Existe-t-il un moyen d'expliquer cette instruction SQL ?

Quand je l'ai essayé avec les variables bind, l'analyseur syntaxique n'a pas aimé. Si je remplace les variables de liaison par les valeurs réelles utilisées dans la déclaration, cela ne risque-t-il pas de modifier le chemin d'accès aux données ?

2voto

Beep beep Points 1843

Le plan pourrait en fait être différent en fonction des valeurs que vous fournissez, il n'y a donc aucun moyen de faire ce que vous voulez. Il suffit de fournir des valeurs d'échantillon réalistes pour l'optimisation/le réglage de vos requêtes.

Plus de détails :

L'utilisation de variables de liaison élimine l'étape d'analyse pour chaque requête liée après la première. Cette étape n'est pas représentée dans le plan explain. Cependant, la planification et l'exécution de la requête ont lieu après l'étape de liaison, ce qui explique pourquoi votre plan d'explication ne fonctionne pas.

Voici le flux de base de la construction d'une requête dans PostgreSQL (du moins la dernière fois que je l'ai utilisé, c'est-à-dire il y a quelques années) :

Recevoir -> Analyser -> Lier -> Planifier -> Exécuter -> Retourner

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X