Como explicar uma consulta no PostgreSQL 8.3 que possui variáveis de ligação

3

Eu preciso explicar uma instrução SQL gerada pelo aplicativo no PostgreSQL 8.3. Capturei a instrução SQL no log, mas ela tem muitas variáveis de ligação. É de alguma forma que eu possa explicar esta declaração SQL?

Quando eu tentei com as variáveis bind o parser não gostou. Se eu alterar as variáveis de ligação para os valores reais usados na instrução, isso não mudaria potencialmente o caminho de acesso aos dados?

    
por user7286 02.09.2009 / 04:10

1 resposta

1

O plano pode ser diferente com base nos valores fornecidos, por isso não há como fazer o que você deseja. Basta adicionar alguns valores de amostra realísticos para sua otimização / ajuste de consulta.

Mais detalhes:

O uso de variáveis de ligação elimina a etapa de análise para cada consulta vinculada após a primeira. Esta etapa não está representada no plano de explicação. No entanto, o planejamento e a execução da consulta ocorrem após a etapa de associação, e é por isso que o plano de explicação não funciona.

Aqui está o fluxo básico da construção de uma consulta no PostgreSQL (pelo menos na última vez que usei, que já faz alguns anos):

Receba - > Analisar - > Vincular - > Planejar - > Execute - > Retornar

    
por 02.09.2009 / 04:33