tutorial read query postgres plan index how example create cost analyze sql postgresql sql-execution-plan

read - Plan explica SQL: ¿qué es Materialise?



pgadmin explain cost (3)

Le pedí a PostgreSQL que explicara mi consulta. Parte de la explicación fue:

table_name --> Materialize

¿Qué se materializa? Estoy uniendo dos tablas, no vistas ni nada de eso.


Significa que no puede usar ningún índice (o método similar) para hacer eficiente la combinación, de modo que como último recurso se materializa el resultado de una de las tablas para tener un conjunto más pequeño con el que trabajar cuando se una contra la otra tabla.


Un nodo de materialización significa que la salida de lo que está debajo de él en el árbol (que puede ser un escaneo, o un conjunto completo de uniones o algo así) se materializa en la memoria antes de que se ejecute el nodo superior. Esto generalmente se hace cuando el nodo externo necesita una fuente que pueda volver a escanear por alguna razón u otra.

Entonces, en su caso, el planificador está determinando que el resultado de un escaneo en una de sus tablas encajará en la memoria, y hasta que sea posible elegir una operación de unión superior que requiera un nuevo escaneo y que a la vez sea más económica.


Podemos decir que el comando Materialize creará una View of a table (al igual que una tabla virtual O una SnapShot de la tabla en la Memoria)

Se utiliza para mejorar la visibilidad de los datos presentándolos en un contexto más informativo y para controlar el acceso a los datos mediante la ocultación de datos críticos o confidenciales de los usuarios que no necesitan verlo o para quienes no sabemos qué enséñalo.

El principal beneficio de usar Materialise / Snap-Shot es reducir el costo de la consulta en esa tabla posteriormente. En el plan de ejecución, el mismo establece que ¡cuánto beneficio obtendremos si utilizamos materializar en comparación con cuando no se usa!

Explicar para verificar el plan de ejecución

-> Materialize (cost=0.29..8.51 rows=10 width=244) -> Index Scan using tenk2_unique2 on tenk2 t2 (cost=0.29..8.46 rows=10 width=244) Index Cond: (unique2 < 10)

He ignorado esto --> ya que no hay tal operador en mi conocimiento, más el - comentará la expresión después, he asumido que usted quiso decir esto -> solamente.

Espero que esto ayude..