Use EXPLAIN para consultar el plan de ejecución de una sentencia SQL sin ejecutarla. Esto resulta útil al optimizar consultas; por ejemplo, para comprobar si un índice se usa de manera efectiva.
Motores y versiones compatibles
LindormTable y LindormTSDB son compatibles con EXPLAIN.
Las opciones de profundidad del plan (
WITH TYPEyWITHOUT IMPLEMENTATION) requieren LindormTable 2.6.3 o posterior y Lindorm SQL 2.6.4 o posterior. Para conocer la versión de Lindorm SQL, consulte SQL versions.
Sintaxis
explain_statement ::= EXPLAIN [ PLAN ] [ explain_depth_expression ]
[ FOR ] select_statement;
explain_depth_expression ::= { WITH TYPE | WITHOUT IMPLEMENTATION }
Parámetros
Profundidad del plan
El plan de ejecución que devuelve EXPLAIN tiene tres niveles de profundidad. Use la expresión opcional explain_depth_expression para seleccionar la profundidad.
|
Profundidad |
Expresión |
Cuándo usarla |
|
Plan físico |
(Ninguna) |
Optimización general de consultas. Devuelve el plan totalmente optimizado después de que el optimizador aplica los filtros. |
|
Plan lógico |
|
Depuración de la estructura de la consulta antes de la optimización. Devuelve el plan lógico sin optimizar. |
|
Plan de tipos |
|
Inspección rápida de los tipos de columna del conjunto de resultados sin ver el plan completo. Devuelve únicamente los tipos de cada columna del conjunto de resultados. |
Sentencia SELECT
La select_statement es la consulta cuyo plan de ejecución desea consultar.
Ejemplos
A continuación se muestran ejemplos con esta tabla:
CREATE TABLE test (
p1 VARCHAR(255) NOT NULL,
c1 VARCHAR(255),
PRIMARY KEY (p1)
);
Con estos datos:
INSERT INTO test (p1, c1) VALUES
('3abc9378', '10'),
('3def9378', NULL),
('3ghi1234', '15'),
('3jkl5678', NULL),
('3mno9378', '20'),
('3pqr0000', '25'),
('3stu9378', '30'),
('3vwx0000', NULL),
('3yz_9378', '35'),
('3_1239378', '40');
Los tres ejemplos ejecutan EXPLAIN sobre la misma consulta, cada uno con una profundidad distinta.
Consultar el plan físico
Devuelve el plan de ejecución optimizado. Úselo para la mayoría de las tareas de optimización de consultas.
EXPLAIN SELECT POSITION('9378' IN p1) AS lp, COUNT(c1) FROM (SELECT * FROM test WHERE p1 like '3_%') GROUP BY lp ORDER BY lp;
Consultar el plan lógico
Devuelve el plan lógico sin optimizar. Úselo cuando necesite inspeccionar la estructura original de la consulta antes de que el optimizador la reescriba.
EXPLAIN WITHOUT IMPLEMENTATION FOR SELECT POSITION('9378' IN p1) AS lp, COUNT(c1) FROM (SELECT * FROM test WHERE p1 like '3_%') GROUP BY lp ORDER BY lp;
Consultar el plan de tipos
Devuelve únicamente los tipos de las columnas del conjunto de resultados. Úselo para comprobar rápidamente los tipos sin cargar el plan completo.
EXPLAIN WITH TYPE FOR SELECT POSITION('9378' IN p1) AS lp, COUNT(c1) FROM (SELECT * FROM test WHERE p1 like '3_%') GROUP BY lp ORDER BY lp;