Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
El plan de consultas EXPLAIN
PostgreSQL proporciona EXPLAIN
las EXPLAIN ANALYZE
opciones para devolver planes de consultas con detalles sobre cómo se ejecutará la consulta.
La declaración EXPLAIN
La EXPLAIN
sentencia devuelve el plan de consultas que el planificador de PostgreSQL genera para una sentencia determinada. El plan de consultas muestra lo siguiente:
-
Cómo se escanearán las tablas incluidas en una declaración (por ejemplo, mediante un escaneo de índice o un escaneo secuencial)
-
Cómo se unirán varias tablas (por ejemplo, unión por hash, combinación por fusión o unión por bucles anidados)
Comprender el plan es fundamental para mejorar el rendimiento de la consulta. Una vez que comprenda el plan, podrá centrarse en los aspectos en los que la consulta está tardando demasiado y tomar medidas para reducir el tiempo.
Usando EXPLAIN ANALYZE
En PostgreSQLEXPLAIN
, solo generará un plan para la declaración dada. Si agrega la ANALYZE
palabra clave, EXPLAIN
devolverá el plan, ejecutará la consulta y mostrará el tiempo de ejecución real y el recuento de filas de cada paso. Esto es indispensable para analizar el rendimiento de la consulta.
importante
Cuando EXPLAIN ANALYZE
lo use, tenga cuidado con INSERT
UPDATE
, yDELETE
.
¿Cómo leer el plan de consultas de EXPLAIN
Un plan de consultas de PostgreSQL es una estructura de árbol que consta de varios nodos. El plan de EXPLAIN
consultas muestra los pasos que utiliza el motor de base de datos para ejecutar una consulta. El plan de consultas proporciona la siguiente información:
-
El tipo de operaciones que se realizan, como escaneos secuenciales, escaneos de índices o uniones de bucles anidados.
-
Una etiqueta, como, o
Seq Scan
Index Scan
Nested Loop
, para describir la operación que se está realizando. -
El nombre de la tabla o el índice que está procesando la consulta.
-
Columnas de costos y filas con información sobre el costo estimado en una unidad de cálculo arbitraria y el número de filas procesadas.
-
El estado del filtro de cualquier filtro aplicado a la operación, como la
where
condición. -
Una representación visual de los pasos, en la que cada operación se muestra como un nodo y flechas que conectan las operaciones. El orden de las operaciones se muestra de izquierda a derecha, y las operaciones anteriores se incorporan a las operaciones posteriores.
La siguiente captura de pantalla muestra el plan de consulta para un escaneo secuencial.

La estimación del costo (cost=0.00..32.60 rows=2260 width=8)
significa que PostgreSQL espera que la consulta requiera 32,60 unidades de cálculo para obtener resultados.
El 0.00
valor es el coste al que este nodo puede empezar a funcionar (en este caso, el tiempo de inicio de la consulta). El rows
valor es el número estimado de filas que devolverá el escaneo secuencial. El width
valor es el tamaño estimado en bytes de las filas devueltas.
Como en el ejemplo se muestra EXPLAIN
con la ANALYZE
opción, se ejecutó la consulta y se capturó la información sobre el tiempo. El resultado (actual
time=0.120..0.121 rows=1 loops=1)
significa lo siguiente:
-
El escaneo secuencial se ejecutó una vez (el
loops
valor). -
El escaneo devolvió una fila.
-
El tiempo real fue de 0,12 milisegundos.