Fatos principais
- Categoria
- Desenvolvimento e Web
- Tipos de entrada
- textarea, select, number
- Tipo de saída
- html
- Cobertura de amostras
- 4
- API disponível
- Yes
Visão geral
O Visualizador de Plano de Execução SQL ajuda desenvolvedores e administradores de banco de dados a otimizar consultas analisando saídas do EXPLAIN e EXPLAIN ANALYZE do PostgreSQL, MySQL e SQLite. A ferramenta transforma planos complexos em formato texto ou JSON em uma árvore de custos interativa e colorida, destacando gargalos de desempenho, divergências de estatísticas e sugerindo índices recomendados para acelerar suas consultas.
Quando usar
- •Quando uma consulta SQL apresenta lentidão em produção e você precisa identificar qual operação está consumindo mais tempo.
- •Ao analisar a diferença entre as linhas estimadas pelo planejador e as linhas reais retornadas para detectar estatísticas desatualizadas.
- •Para obter recomendações automáticas de criação de índices ou reescrita de consultas com base no plano de execução gerado pelo banco de dados.
Como funciona
- •Cole a saída textual ou em formato JSON do comando EXPLAIN ou EXPLAIN ANALYZE gerada pelo seu banco de dados (PostgreSQL, MySQL ou SQLite).
- •Selecione o dialeto correspondente ou deixe a detecção automática identificar a estrutura dos dados inseridos.
- •Opcionalmente, insira a consulta SQL original para ajudar na associação de predicados e defina o limite de profundidade da árvore.
- •Visualize a árvore de execução colorida por severidade, com alertas de divergência de linhas e sugestões práticas de índices.
Casos de uso
Exemplos
1. Otimização de Varredura Sequencial no PostgreSQL
Desenvolvedor Backend- Contexto
- Um desenvolvedor percebeu lentidão ao buscar usuários por e-mail em uma tabela com mais de 100 mil registros.
- Problema
- O plano de execução mostrava um Seq Scan na tabela users com grande divergência entre as linhas estimadas e reais.
- Como usar
- Colou o JSON do EXPLAIN (FORMAT JSON, ANALYZE) no campo de entrada e selecionou o dialeto PostgreSQL.
- Configuração de exemplo
-
{ "explainOutput": "[\n {\n \"Plan\": {\n \"Node Type\": \"Seq Scan\",\n \"Relation Name\": \"users\",\n \"Alias\": \"users\",\n \"Filter\": \"((email)::text = '[email protected]')\",\n \"Plan Rows\": 1000,\n \"Actual Rows\": 95000\n }\n }\n]", "dialect": "postgresql", "sql": "SELECT * FROM users WHERE lower(email) = '[email protected]'" } - Resultado
- A ferramenta destacou o nó de Seq Scan em vermelho devido à divergência de 95x nas linhas e sugeriu a criação de um índice na coluna email da tabela users.
2. Identificação de Filesort no MySQL
Administrador de Banco de Dados- Contexto
- Uma consulta de relatório com ordenação estava demorando muito para responder no ambiente de homologação.
- Problema
- A consulta utilizava ordenação em disco (filesort) sem aproveitar índices existentes.
- Como usar
- Executou EXPLAIN FORMAT=JSON no MySQL, copiou o resultado e colou no visualizador.
- Configuração de exemplo
-
{ "explainOutput": "{\n \"query_block\": {\n \"select_id\": 1,\n \"ordering_operation\": {\n \"using_filesort\": true,\n \"table\": {\n \"table_name\": \"orders\",\n \"access_type\": \"ALL\"\n }\n }\n }\n}", "dialect": "mysql" } - Resultado
- O visualizador exibiu um alerta crítico de filesort e recomendou um índice composto cobrindo as colunas de filtro e ordenação.
Testar com amostras
json, sql, textHubs relacionados
FAQ
Quais bancos de dados são suportados pelo visualizador?
A ferramenta suporta planos de execução do PostgreSQL (JSON e TEXT), MySQL (JSON e formato tabular clássico) e SQLite (EXPLAIN QUERY PLAN).
Como a ferramenta detecta divergências de estatísticas?
Ela compara o número de linhas estimadas pelo planejador com as linhas reais executadas (do EXPLAIN ANALYZE) e sinaliza diferenças iguais ou superiores a 10 vezes.
Posso colar a consulta SQL diretamente sem o EXPLAIN?
Não, a ferramenta analisa a saída do comando EXPLAIN gerada pelo banco de dados, e não apenas a consulta SQL estática.
O que significa um alerta de "Seq Scan" ou "Full Table Scan"?
Significa que o banco de dados leu a tabela inteira sequencialmente em vez de usar um índice, o que pode deixar a consulta lenta em tabelas grandes.
Como as sugestões de índices são geradas?
A ferramenta analisa os filtros aplicados (predicados) e as tabelas varridas no plano de execução para recomendar índices específicos nas colunas filtradas.