PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

No PostgreSQL, o que significa subplano com hash?


Você tem o equívoco de que o otimizador reescreve a instrução SQL. Esse não é o caso. Reescrever a consulta é o trabalho do reescritor de consulta , que, por exemplo, substitui as visualizações por sua definição. O otimizador apresenta uma sequência de etapas de execução para calcular o resultado. Produz um plano , não uma instrução SQL.

O otimizador planeja duas alternativas:executar o subplano 1 para cada linha encontrada ou executar o subplano 2 uma vez (observe que é independente de a ), crie uma tabela de hash a partir do resultado e teste esse hash para cada linha encontrada em a .

Em tempo de execução, o PostgreSQL decide usar a última estratégia, por isso o subplano 1 nunca é executado.