sql >> Base de Datos >  >> RDS >> PostgreSQL

En PostgreSQL, ¿qué significa el subplan hash?

Tiene la idea errónea de que el optimizador reescribe la instrucción SQL. Ese no es el caso. Reescribir la consulta es el trabajo del reescritor de consultas , que por ejemplo reemplaza las vistas con su definición. El optimizador presenta una secuencia de pasos de ejecución para calcular el resultado. Produce un plan , no una instrucción SQL.

El optimizador planea dos alternativas:ejecutar el subplan 1 para cada fila encontrada o ejecutar el subplan 2 una vez (tenga en cuenta que es independiente de a ), cree una tabla hash a partir del resultado y pruebe ese hash para cada fila encontrada en a .

En tiempo de ejecución, PostgreSQL decide utilizar esta última estrategia, por lo que el subplan 1 nunca se ejecuta.