Article image
Nedymar Schuabe
Nedymar Schuabe15/05/2024 18:23
Compartilhe

SQL Optimization

    Olá, ao longo da minha jornada profissional, fui participando de alguns projetos. E nesses projetos consegui me identificar muito na parte de banco de dados, em PL/SQL e otimizações de consultas.

    E um desses projetos que gostaria de compartilhar hoje é de otimização de uma view. Foi em ambiente oracle e sobre o sistema MV.

    A query veio para mim com um tempo de 10min e 40seg. Sim, é uma query que busca de várias tabelas e até sobre algumas tabelas com uma má performace. Mas, aceitei o desafio da tentativa de otimização.

    Fiz vários testes, criando índices, peguei algumas subquerys e coloquei em views, outras em uma function, aumentei as condições no where, mas adiantava pouco.

    E até que diante de uma conversa com o cliente, que explicava sobre a ideia de algumas colunas, me deixou com uma pulga atrás da orelhavem uma coluna específica.

    Analisei mais, e resolvi tirar a "tal" da coluna para verificar (que era uma baita de uma subquery), e o tempo diminui absurdamente, acredite, de 10min sem essa coluna foi para 30seg, inacreditável.

    Então comecei a focar na melhoria dessa coluna. 

    Bom, até que depois de várias tentativas, apareceu o resultado kkk

    Mostro o resultado na imagem abaixo haha

    Mas, em resumo, foi alguns faotores. Na subquery tinha vários Cases, então arrumei mais e fazendo alguns testes, tinha cases que nunca entravam, então retirei, enfim, dei uma organizada nisso. Depois vi que a subquery chamava várias vezes uma function para o mesmo resultado, ao analisar mais afundo, vi que cada chamada na function subscrevia o resultado, e assim foi, retirei algumas chamadas e fui executando a view para ver os impactos.

    Após concluir essa parte, não me contentando com o resultado, fui fazendo mais testes e até que um dos testes foi aceitável kk criei uma function apenas para pegar esse resultado da subquery.

    Mas, é isso, compartilhando um dos projetos que participei. Fico feliz em poder ajudar nisso e ter um resultado de SQL rápido e também bem documentada para o próximo desenvolvedor.

    Compartilhe
    Comentários (0)