Olá, visitante!
Recentemente me deram uma missão de resolver alguns problemas de lentidão em alguns relatórios do ERP que eu desenvolvo.
Pelo fato de termos clientes com uma massa de dados um tanto quanto grande, lentidão é um pouco "comum", mas alguns relatórios estavam bem problemáticos.
Como de costume, as duas primeiras coisas que eu fiz foram executar um Vaccum e Reindex no banco de dados, onde tais ações não resultaram em nenhuma melhora.
O SQL fazia alguns condições utilizando campos "Char" e "Varchar", tentei criar índices mas sem sucesso, e eu percebi que os campos inteiros e boleanos não "entravam em gargalo" ao ser executado (percebi isso no Explain do BD), e foi aí que surgiu uma ideia um tanto quanto diferente.
Transformei os campos "char" e "varchar" em boleanos. Sabe como? Assim:
SELECT *
FROM funcionarios f
WHERE CASE WHEN f.nome = 'LUCAS' THEN TRUE ELSE FALSE END = TRUE
O SQL acima é apenas um exemplo de como eu resolvi, mas a melhora foi tanta, que de 45 segundos de geração do relatório, caíram para 3 SEGUNDOS sem alterar nenhuma estrutura de nenhuma tabela utilizada. (Isso com um período de 6 MESES).
Me disseram que foi uma forma um tanto quanto criativa (e bem funcional) de resolver o problema.
É isso, qualquer dúvida, por favor, poste abaixo.
Obrigado!
Lucas de Souza Cruz
0 Comentários
Deixe aqui suas dúvidas, opiniões e contribuições =}
Emoji