Noções Básicas de Índices
9 exemplos para você começar com índices do PostgreSQL - 6 básicos e 3 intermediários.
Busque em todas as páginas da documentação
9 exemplos para você começar com índices do PostgreSQL - 6 básicos e 3 intermediários.
Tabela com milhares de linhas para uma saída EXPLAIN significativa.
# Desenvolvimento local com Docker (PostgreSQL 18)
docker run -d --name pg18 -e POSTGRES_PASSWORD=dev -p 5432:5432 postgres:18
psql postgres://postgres:dev@localhost:5432/postgresMétodo de acesso padrão para igualdade e intervalo.
CREATE INDEX customers_email_idx ON app.customers (email);
EXPLAIN SELECT * FROM app.customers WHERE email = 'ada@example.com';A coluna principal deve corresponder ao predicado.
CREATE INDEX orders_account_created_idx ON app.orders (account_id, created_at DESC);Cada índice é atualizado a cada alteração de linha.
INSERT INTO app.customers (email) VALUES ('new@example.com');
-- atualiza customers_email_idx mais o PKImpõe a exclusividade e acelera a busca.
CREATE UNIQUE INDEX customers_email_unique ON app.customers (lower(email));Inspeção do catálogo.
SELECT indexname, indexdef
FROM pg_indexes
WHERE schemaname = 'app' AND tablename = 'customers';Tabelas pequenas ou uma fração grande das linhas.
EXPLAIN ANALYZE SELECT * FROM app.customers;Evite bloqueios de escrita longos em produção.
CREATE INDEX CONCURRENTLY customers_created_idx
ON app.customers (created_at);Projeções amigáveis para index-only scans.
CREATE INDEX orders_cover_idx ON app.orders (account_id) INCLUDE (total);pg_stat_user_indexes.
SELECT relname, indexrelname, idx_scan, idx_tup_read
FROM pg_stat_user_indexes
WHERE schemaname = 'app'
ORDER BY idx_scan;Versões da Pilha: 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+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026