DEV Community

Cover image for Resolvendo problema de performance no PostgreSQL com CTE

Resolvendo problema de performance no PostgreSQL com CTE

Leandro Proença on June 13, 2022

Spoiler: a query ficou 23x mais rápida com CTE's apenas transformando o problema quadrático em linear. Sem índices. Um dos cenários mais comuns de...
Collapse
 
dukex profile image
Duke

Otimo post Leandro, eu uso bastante CTEs principalmente para gerar dados direito do banco transacional.

Uma outra alternativa, ou complemento, que talvez até melhore os 300ms, é usar views materializadas, quando os dados não precisam ser realtime, as views materializadas são uma mão na roda, precisa só tomar o cuidado de agendar corretamente a refresh dela.

Eu combino bastante CTEs com views materializadas, a grande vantagem dela é que a aplicação entendem ela como uma tabela, isso faz com que você consiga usar ela com qualquer ORM disponivel sem dor de cabeça.

Collapse
 
leandronsp profile image
Leandro Proença

valeu Duke! parece uma ótima combinação mesmo, views materializadas com CTE's!

Collapse
 
ryangst profile image
Ryan Lucas

Muito interessante o artigo, não conhecia essa aproximação para criação de tabelas temporárias.

Parabéns!

Collapse
 
josethz00 profile image
José Thomaz

ótimo artigo, parabéns!!

Collapse
 
mfagundes profile image
Mauricio Fagundes

Finalmente vejo uma explicação clara do uso da cláusula WITH. Obrigado!