Melhores Práticas de Índices
Índices não são decorações gratuitas. Comprove cada um com evidências de carga de trabalho.
Como Usar Esta Lista
- Capture padrões de consulta do
pg_stat_statements. - Revise índices não utilizados trimestralmente.
A - Design
- Indexe predicados e chaves de junção que você realmente filtra. Não todas as colunas.
- Combine a ordem de múltiplas colunas com as consultas. Regra da coluna principal.
- Use índices parciais para subconjuntos "quentes". Menores e mais rápidos.
B - Validação
- EXPLAIN ANALYZE antes e depois. Comprove o benefício.
- Verifique o "bloat" do índice e índices inválidos. REINDEX quando necessário.
- Remova índices com
idx_scan = 0após a janela de observação. Documente a remoção na migração.
C - Operações
- CREATE INDEX CONCURRENTLY em produção. Evite bloquear escritas.
- Planeje o
fillfactorem tabelas com muitas atualizações (UPDATE). Reduza divisões de página. - Mantenha o
autovacuumsaudável para varreduras apenas de índice (index-only scans). O mapa de visibilidade é importante.
FAQs
Quantos índices por tabela?
O mínimo possível que atenda ao SLA; tipicamente 3-8 para OLTP, dependendo dos caminhos de acesso.
Relacionados
- Índices B-tree - multicoluna
- Melhores Práticas de Design e Manutenção de Índices - ciclo de vida
Versões de Stack: Esta página foi escrita para PostgreSQL 18.4 (estável 18, manutenção 17), pgvector 0.8+, PgBouncer 1.x, Patroni 3.x e PostGIS 3.5+.