Consultas eficientes entre partições
Escreva consultas que se beneficiem da poda de partições e verifique essa poda com EXPLAIN.
Consultas eficientes entre partições é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.
Filtre pela chave de partição
A poda só funciona quando a cláusula WHERE inclui a chave de partição:
-- Prunes (uses date partitioning):
SELECT * FROM events WHERE ts >= '2024-03-01' AND ts < '2024-04-01';
-- No pruning — scans all partitions:
SELECT * FROM events WHERE user_id = 42;Poda composta
O planejador pode fazer a poda com base em várias chaves em tabelas particionadas em vários níveis:
SELECT * FROM events
WHERE ts >= '2024-03-01' AND ts < '2024-04-01'
AND user_id = 42;
-- Prunes by date AND by hash partition.EXPLAIN mostra a poda
Verifique o plano para confirmar que a poda está ocorrendo:
EXPLAIN SELECT * FROM events WHERE ts >= '2024-03-01' AND ts < '2024-04-01';
-- Append
-- -> Seq Scan on events_2024_q1
-- Only Q1 partition shown; others pruned.Exclusão por restrição versus poda de partições
O PG moderno usa "poda de partições" rápida por padrão. A antiga "exclusão por restrição" era mais lenta; certifique-se de que enable_partition_pruning = on.
Poda no momento da execução
Mesmo com consultas parametrizadas (PREPARE), o PG pode fazer a poda no momento da execução:
PREPARE p(timestamptz, timestamptz) AS
SELECT * FROM events WHERE ts >= $1 AND ts < $2;
EXECUTE p('2024-03-01', '2024-04-01');
-- Pruning happens at execute, not at parse.Índices entre partições
Os índices são propagados para as partições. Uma consulta na coluna indexada funciona em todas as partições — mas o planejador verifica o índice de cada uma delas.
Agregações entre partições
Um GROUP BY na chave de partição oferece o maior benefício. Um GROUP BY em outras colunas verifica todas as partições.
Execução paralela por partição
O PostgreSQL pode executar verificações nas partições em paralelo (PG 11+):
SET max_parallel_workers_per_gather = 4;
EXPLAIN SELECT COUNT(*) FROM events;
-- Parallel Append over partitions.Junções entre tabelas particionadas
Se ambas as tabelas particionadas compartilharem a chave de partição, a "junção por partição" será mais rápida — cada partição será combinada de forma independente:
SET enable_partitionwise_join = on;
-- Now PG can join events to event_metrics partition-by-partition.Evitando erros comuns
- Não aplique funções à chave de partição em WHERE — isso impede a poda
- Não se esqueça de incluir a chave de partição em suas consultas
- Não particione em milhares de partições pequenas — o custo do planejamento dominará
Quantidade adequada de partições
Procure ter dezenas ou poucas centenas de partições, não milhares. Cada partição gera custo adicional no planejamento. Para necessidades muito granulares, use subpartições.
Manutenção por partição
VACUUM, ANALYZE e REINDEX são executados por partição — e podem ser executados em paralelo. Quanto mais partições você tiver, maior será o benefício, dentro do razoável.
Recapitulação
O particionamento beneficia consultas que filtram pela chave de partição.
- WHERE na chave de partição → poda
- Confirme com EXPLAIN
- Ative a junção por partição para junções compatíveis
- Não exagere no particionamento
Verificação rápida
Você tem events particionada por mês usando ts. Qual consulta se beneficia da poda de partições?
Perguntas Frequentes
A aula “Consultas eficientes entre partições” é grátis?
Sim — o texto completo de “Consultas eficientes entre partições” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.
O que vou aprender em “Consultas eficientes entre partições”?
Escreva consultas que se beneficiem da poda de partições e verifique essa poda com EXPLAIN. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar SQL Academy?
Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Consultas eficientes entre partições”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de SQL Academy?
Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que particionar: poda e manutenção
- Particionamento por intervalo, lista e hash
- Desanexação e anexação de partições
- Consultas eficientes entre partições