← SQL: perguntas melhores aos dados
05 / 11 · 22 MIN

Índices e planos de execução

Relaciona acesso aos dados, seletividade e custo de manutenção.

Compreender o conceito

Um índice pode reduzir trabalho de pesquisa, mas ocupa espaço e precisa de manutenção nas escritas. O planeador escolhe um plano com estimativas; uma leitura sequencial pode ser adequada quando grande parte da tabela é necessária. A existência de um índice não prova que a consulta o usa nem que deva usá-lo.

Aplicar e decidir

Observa filtros, volume, ordenação e estatísticas. Em índices compostos, ordem das colunas e predicados influenciam as opções; o comportamento exato depende do motor e versão. EXPLAIN descreve o plano; EXPLAIN ANALYZE executa a consulta. Em operações de escrita ou consultas caras, essa diferença importa para os efeitos e a carga.

Aplicação guiada no trabalho

Analisa uma consulta com os parâmetros e a distribuição que representam o trabalho real. Um plano que estima 100 linhas e observa 20000 com loops=1 merece investigação da estimativa; não prova por si só avaria de disco. O nome Seq Scan também não prova mau desempenho quando o relatório lê quase toda a tabela. Compara resultados, linhas, duração e recursos em condições comparáveis. EXPLAIN sem ANALYZE mostra o plano estimado; ANALYZE executa a instrução e pode escrever se a instrução escrever. Usa um ambiente e permissões adequados. Uma transação revertida não é uma autorização para provocar carga ou efeitos externos. Antes de aceitar um índice, compara o ganho de leitura com espaço e manutenção no lote de escrita, incluindo o prazo operacional.

NA PRÁTICA

Uma consulta diária filtra por account_id e intervalo temporal. Avalia um índice compatível com esse padrão e mede o efeito, incluindo o custo nas escritas.

Armadilhas comuns

Confundir estimativa com medição; executar ANALYZE sem considerar efeitos; otimizar só a leitura.

Tópicos relacionados: Concorrência e atualização segura · Consultar com intenção

Leva esta ideia contigo

Índices são uma escolha baseada na carga, não uma garantia universal de rapidez.

Criar conta

Referência: PostgreSQL 18: Using EXPLAIN · PostgreSQL 18 reference semantics; DR SQL 2026.4; synthetic plan metrics and portable SQLite 3.51.2 examples