Descripción de la instrucción EXPLAIN
Use la instrucción EXPLAIN para mostrar el plan de ejecución de la consulta. EXPLAIN se puede usar con cualquier instrucción SELECT, INSERT, UPDATE, DELETE, VALUES, EXECUTE, DECLARE o CREATE TABLE AS.
EXPLAIN muestra el plan de ejecución de la consulta, lo que le permite comprender cómo PostgreSQL: ejecuta una instrucción, si se usan índices, cómo se combinan las tablas y el costo notional de una consulta.
La sintaxis de EXPLAIN es:
EXPLAIN [ (parameter [, ...] ) ] statement
Los parámetros opcionales son:
- ANALIZAR
- DETALLADO
- COSTOS
- BUFFERS
- FORMATO
Por ejemplo:
EXPLAIN ANALYZE SELECT * FROM category ORDER BY cat_id;
Esta consulta simple devuelve la siguiente información:
ANALIZAR
Esta opción ejecuta la instrucción y devuelve el plan de consulta. La salida de la instrucción se descarta, pero la instrucción se ejecuta. Puede combinar las instrucciones ROLLBACK y EXPLAIN ANALYZE para evitar que se apliquen los cambios con una consulta que realice cambios en la base de datos, como INSERT, UPDATE o DELETE. Por ejemplo:
BEGIN;
> EXPLAIN ANALYZE INSERT INTO Animal
> (ani_id, name, weight_kg, cat_id, enc_id)
> VALUES (28, 'Robin Robin', 0.5, 1, 2);
ROLLBACK;
DETALLADO
Muestra información adicional, entre las que se incluyen:
- lista de columnas de salida para cada nodo del árbol del plan
- nombres de esquema de las tablas y las funciones
- nombres de variables de las expresiones junto con el alias de tabla
- el nombre de cada desencadenador para el que se muestran las estadísticas.
COSTOS
Incluye el costo estimado de inicio y el costo total, además del número estimado de filas y el ancho estimado de cada fila.
BUFFERS
Los búferes solo se pueden usar con la opción ANALYZE. PostgreSQL usa una memoria caché usada menos recientemente (LRU) para almacenar datos usados con frecuencia en la memoria. Los búferes muestran la cantidad de datos procedentes de una memoria caché y la cantidad que se recupera del disco. Muestra el número de bloqueos compartidos, locales y temporales, aciertos, lecturas y escrituras. Los datos proporcionados por BUFFERS pueden ayudar a comprender las partes intensivas de E/S de una consulta.
FORMATO
Define el formato de salida. XML, JSON o YAML contienen la misma información que TEXT, pero en un formato que es más fácil de usar para los programas. TEXT es el valor predeterminado.