Descripción de la instrucción EXPLAIN

Completado

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 ejecuta PostgreSQL una instrucción, incluido si se usan índices, cómo se combinan las tablas y el costo teórico de una consulta.

La sintaxis de EXPLAIN es la siguiente:

EXPLAIN [ (parameter [, ...] ) ] statement

Los parámetros opcionales son:

  • ANÁLISIS
  • VERBOSE
  • COSTS
  • BUFFERS
  • FORMAT

Por ejemplo:

EXPLAIN ANALYZE SELECT * FROM category ORDER BY cat_id;

Esta consulta simple devuelve la información siguiente:

Captura de pantalla que muestra el plan de consulta.

ANÁLISIS

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 impedir 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;

VERBOSE

Muestra información adicional, entre la que se incluye todo lo siguiente:

  • 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
  • nombre de cada desencadenador para el que se muestran estadísticas.

COSTS

Incluye el coste de inicio estimado y el coste 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 emplea una caché usada menos recientemente (LRU) para almacenar datos usados con frecuencia en la memoria. Los búferes muestran cuántos datos proceden de una caché y cuántos se recuperan del disco. Muestra el número de bloqueos compartidos, locales y temporales, aciertos, lecturas y escrituras. Los datos que proporciona BUFFERS pueden ayudar a comprender las partes con un uso intensivo de E/S de una consulta.

FORMAT

Define el formato de salida. XML, JSON o YAML contienen la misma información que TEXT, pero en un formato que les resulta más fácil de usar a los programas. El valor predeterminado es TEXT.