# Visualizador de Plano de Execução SQL

Cole a saída do EXPLAIN / EXPLAIN ANALYZE (PostgreSQL/MySQL/SQLite) para renderizar uma árvore de custos, marcar divergências entre linhas estimadas e reais e sugerir índices

> Página canônica: https://elysiatools.com/pt/tools/sql-explain-plan-visualizer

- **Categoria:** Development

- **Palavras-chave:** explain, sql, plano, índice, banco de dados

## Visão geral

Esta ferramenta analisa a saída real do EXPLAIN — não o texto estático da consulta — e renderiza o plano de execução como uma árvore indentada, colorida por severidade.

Entradas suportadas (auto-detectadas ou selecionáveis):
- PostgreSQL: JSON de `EXPLAIN (FORMAT JSON, ANALYZE)`, ou a saída TEXT indentada padrão.
- MySQL: saída de `EXPLAIN FORMAT=JSON`, ou o EXPLAIN tabular clássico (id|select_type|table|type|key|rows|Extra).
- SQLite: texto de `EXPLAIN QUERY PLAN` (SCAN/SEARCH ... USING INDEX ...).

Cada nó mostra: tipo de nó, relação, índice usado, custo/tempo estimado, linhas estimadas e — com EXPLAIN ANALYZE — linhas e tempos reais. Divergências ≥10× entre linhas estimadas e reais são marcadas como pontos quentes de estatísticas.

Diagnósticos cobrem: sequential/full table scans em tabelas grandes, divergência de estatísticas (ANALYZE desatualizado), filesorts, tabelas temporárias, nested loops caros, predicados não-sargable (funções sobre colunas indexadas), SELECT *, ORDER BY sem LIMIT — cada um com sugestão concreta de índice ou reescrita (ex. “adicione um índice em users(email)”).

## Entradas

- **Saída do EXPLAIN** (textarea): Paste EXPLAIN JSON or TEXT here. e.g. PostgreSQL: \[ { "Plan": { "Node Type": "Seq Scan", "Relation Name": "users", "Actual Rows": 95000, "Plan Rows": 1000 } } \] Or indented text: Seq Scan on users (cost=0.00..1541.00 rows=1000 width=4)
- **Dialeto** (select)
- **Consulta SQL (opcional)** (textarea): SELECT * FROM users WHERE lower(email) = 'a@b.com' ORDER BY created_at
- **Limite de profundidade** (number)

## 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

- Identificação de varreduras sequenciais (Seq Scan) em tabelas grandes que necessitam de novos índices.
- Diagnóstico de estatísticas desatualizadas comparando estimativas do planejador com a execução real.
- Otimização de consultas complexas com múltiplos joins (Nested Loops) e ordenações caras (Filesort).

## Perguntas frequentes

### 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.

## Ferramentas relacionadas

- [Visualizador de saves de jogos](https://elysiatools.com/pt/tools/game-save-viewer): Solte qualquer arquivo de save — NBT de Minecraft, GVAS de Unreal Engine, contêineres de Palworld, saves de texto JSON/XML/INI/Lua, perfis SQLite — e receba o formato detectado, versões da engine, campos-chave de progresso e uma árvore estrutural limitada.
- [Planejador de migracao CSV para banco de dados](https://elysiatools.com/pt/tools/csv-to-database-migration-planner): Infere um schema relacional a partir de CSV e gera planos CREATE TABLE e ALTER para PostgreSQL, MySQL, SQLite ou SQL Server
- [Analisador de logs estruturados](https://elysiatools.com/pt/tools/structured-log-analyzer): Detecta formatos comuns de logs, extrai campos principais e exporta em JSON, CSV ou SQL.
- [Auditor de dependências do package.json](https://elysiatools.com/pt/tools/package-json-dependency-auditor): Audita um package.json quanto à higiene de dependências e qualidade das faixas de versão, e opcionalmente inspeciona a árvore transitiva a partir de package-lock.json ou yarn.lock. Sinaliza duplicatas, wildcard ou pre-release, chaves desordenadas, metadados ausentes e dependências runtime/dev mal classificadas.
- [Analisador de previsao e sazonalidade](https://elysiatools.com/pt/tools/time-series-forecast-seasonality-analyzer): Projeta periodos futuros a partir de series temporais CSV ou JSON e mostra tendencia, sazonalidade e residuo
- [GraphQL Playground](https://elysiatools.com/pt/tools/graphql-playground): Cliente GraphQL no navegador: escreva queries e variáveis, envie para qualquer endpoint GraphQL e inspecione resultados JSON formatados ou arrays de erros — ideal para iterar sobre esquemas durante o desenvolvimento
- [Detector de conflitos de prefixo e abreviacao em mock data](https://elysiatools.com/pt/tools/mock-data-naming-conflict-detector): Detecta nomes de campo visualmente confusos e colisoes de prefixo em CSV, JSON ou schemas
- [Construtor de pipeline de texto](https://elysiatools.com/pt/tools/text-pipeline-builder): Executa uma receita portátil de limpeza de texto e mostra cada diff, duração e mudança de caracteres.

## Exemplos

- [Exemplos de Scripts SQL](https://elysiatools.com/pt/samples/sql-samples): Exemplos de consultas SQL e scripts de banco de dados para vários cenários e casos de uso
- [Exemplos de Injeção SQL](https://elysiatools.com/pt/samples/sql-injections): Coleção educacional de payloads de injeção SQL para testes de segurança, avaliação de vulnerabilidades e práticas de codificação defensiva
- [Amostras SQL](https://elysiatools.com/pt/samples/sql-viewer-samples): Arquivos de amostra para o visualizador SQL no navegador
- [Exemplos Avançados PostgreSQL](https://elysiatools.com/pt/samples/postgresql-advanced): Exemplos avançados de banco de dados PostgreSQL incluindo estratégias de otimização, consultas complexas, indexação e ajuste de performance

## Conteúdo relacionado

- [Revisão de consultas SQL para performance e integridade](https://elysiatools.com/pt/hubs/sql-query-review-performance-and-integrity): Construa, formate e revise SQL com joins, evidencia de performance, explain plans, injecao, chaves estrangeiras e diferencas de schema.
