-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
atualizando queries para utilizar views #144
Conversation
joellensilva
commented
Jan 27, 2025
•
edited
Loading
edited
- Foram criadas views materializadas com os dados de anos e meses inconsistentes
- Atualização para utilizá-las
- Utilizar um trigger baseado na inserção de dados poderia afetar significativamente o desempenho do banco, levando em conta que, em dias de coleta, podemos ter entre 100 a 800 atualizações nas tabelas num único dia, o que atualizaria as views na mesma frequência. Dessa forma, as views serão atualizadas após as coletas, quando já finalizadas as modificações no banco de todos os órgãos.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bom trabalho! Deixei alguns comentários.
WITH remuneracoes_inconsistentes AS ( | ||
SELECT DISTINCT orgao, ano | ||
FROM remuneracoes | ||
WHERE inconsistente = TRUE | ||
) | ||
SELECT distinct c.id_orgao, c.ano, | ||
CASE | ||
WHEN ri.orgao IS NOT NULL THEN TRUE | ||
ELSE FALSE | ||
END AS inconsistente | ||
FROM coletas c | ||
LEFT JOIN remuneracoes_inconsistentes ri | ||
ON ri.orgao = c.id_orgao | ||
AND ri.ano = c.ano | ||
WHERE c.atual = true | ||
AND (c.procinfo::text = 'null' OR c.procinfo IS NULL); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Essa view parece redundante já que vc pode obter o órgão e o ano a partir da outra view.
WITH remuneracoes_inconsistentes AS ( | ||
SELECT DISTINCT orgao, ano, mes | ||
FROM remuneracoes | ||
WHERE inconsistente = TRUE | ||
) | ||
SELECT c.id_orgao, c.ano, c.mes, | ||
CASE | ||
WHEN ri.orgao IS NOT NULL THEN TRUE | ||
ELSE FALSE | ||
END AS inconsistente | ||
FROM coletas c | ||
LEFT JOIN remuneracoes_inconsistentes ri | ||
ON ri.orgao = c.id_orgao | ||
AND ri.ano = c.ano | ||
AND ri.mes = c.mes | ||
WHERE c.atual = TRUE | ||
AND (c.procinfo::text = 'null' OR c.procinfo IS NULL); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Como eu não sei qual a lógica que se espera dessa view eu só posso comentar sobre a sintaxe ou boas práticas em geral. O código está bem escrito dessa perspectiva.
Se esse join estiver demorando muito, considere criar um índice nas tabelas para otimizar o lookup.