Skip to content
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

Merged
merged 2 commits into from
Jan 29, 2025
Merged

Conversation

joellensilva
Copy link
Collaborator

@joellensilva joellensilva commented Jan 27, 2025

  • 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.

@joellensilva joellensilva requested review from talitalobo and removed request for fonluiz January 27, 2025 20:14
@talitalobo talitalobo requested a review from rdurl0 January 27, 2025 20:25
@JezzDiego JezzDiego merged commit fb4c47d into master Jan 29, 2025
2 checks passed
@talitalobo talitalobo requested review from fonluiz and removed request for talitalobo and rdurl0 February 3, 2025 20:19
Copy link

@fonluiz fonluiz left a 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.

Comment on lines +145 to +161
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);
Copy link

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.

Comment on lines +126 to +143
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);
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants