DBAtlas · Atlas de operaciones de bases de datos

Obtener el plan de ejecución de una consulta (EXPLAIN)

Oracle

EXPLAIN PLAN FOR
SELECT * FROM customer WHERE city = 'Ankara';
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
-- For the actual executed plan:
-- SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('&sql_id', NULL, 'ALLSTATS LAST'));

EXPLAIN PLAN da el plan estimado; para el número real de filas use DISPLAY_CURSOR + STATISTICS_LEVEL=ALL.

PostgreSQL

EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT)
SELECT * FROM customer WHERE city = 'Ankara';

ANALYZE EJECUTA REALMENTE la consulta (cuidado con INSERT/UPDATE/DELETE; pruébelo dentro de una transacción y haga ROLLBACK).

MySQL

EXPLAIN ANALYZE
SELECT * FROM customer WHERE city = 'Ankara';
-- Estimate only (does not execute): EXPLAIN FORMAT=JSON SELECT ...;

EXPLAIN ANALYZE (MySQL 8.0.18+) ejecuta la consulta; FORMAT=JSON da detalles sin ejecutarla.

SQL Server

SET STATISTICS PROFILE ON;
SELECT * FROM dbo.customer WHERE city = 'Ankara';
SET STATISTICS PROFILE OFF;
-- Estimated plan only (does not execute):
-- SET SHOWPLAN_XML ON;

En SSMS, 'Include Actual Execution Plan' (Ctrl+M) muestra el plan gráfico.

MongoDB

db.customer.find({ city: "Ankara" }).explain("executionStats")

executionStats muestra el número real de documentos devueltos y el uso de índices (IXSCAN vs COLLSCAN).

Redis

# Not applicable: Redis has no query planner.
# The complexity of each command is documented (e.g. GET O(1), SORT O(N+M*log(M))).

El rendimiento depende de la complejidad del comando y del tamaño de la clave/estructura de datos; mídalo con SLOWLOG.

Abrir en DBAtlas →