Use o comando EXPLAIN para visualizar o plano de execução de uma instrução SQL sem executá-la. Esse recurso é útil na otimização de consultas, pois permite verificar, por exemplo, se um índice está sendo usado de forma eficaz.
Engines e versões compatíveis
O LindormTable e o LindormTSDB suportam o comando EXPLAIN.
As opções de profundidade do plano (
WITH TYPEeWITHOUT IMPLEMENTATION) exigem o LindormTable 2.6.3 ou posterior e o Lindorm SQL 2.6.4 ou posterior. Para verificar a versão do seu Lindorm SQL, consulte Versões do SQL.
Sintaxe
explain_statement ::= EXPLAIN [ PLAN ] [ explain_depth_expression ]
[ FOR ] select_statement;
explain_depth_expression ::= { WITH TYPE | WITHOUT IMPLEMENTATION }
Parâmetros
Profundidade do plano
O plano de execução retornado pelo EXPLAIN tem três níveis de profundidade. Use a expressão opcional explain_depth_expression para definir o nível desejado.
|
Profundidade |
Expressão |
Quando usar |
|
Plano físico |
(nenhuma) |
Otimização geral de consultas. Retorna o plano totalmente otimizado após o otimizador aplicar os filtros. |
|
Plano lógico |
|
Depuração da estrutura da consulta antes da otimização. Retorna o plano lógico não otimizado. |
|
Plano de tipos |
|
Inspeção rápida dos tipos das colunas do conjunto de resultados sem exibir o plano completo. Retorna apenas os tipos de cada coluna no conjunto de resultados. |
Instrução SELECT
A select_statement é a consulta cujo plano de execução você deseja visualizar.
Exemplos
Os exemplos a seguir usam esta tabela:
CREATE TABLE test (
p1 VARCHAR(255) NOT NULL,
c1 VARCHAR(255),
PRIMARY KEY (p1)
);
Com estes dados:
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');
Os três exemplos executam o EXPLAIN na mesma consulta, cada um com uma profundidade diferente.
Visualizar o plano físico
Retorna o plano de execução otimizado. Use esta opção para a maioria das tarefas de otimização 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;
Visualizar o plano lógico
Retorna o plano lógico não otimizado. Use esta opção quando precisar inspecionar a estrutura original da consulta antes que o otimizador a reescreva.
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;
Visualizar o plano de tipos
Retorna apenas os tipos das colunas do conjunto de resultados. Use esta opção para verificar rapidamente os tipos sem carregar o plano 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;