image

Access unlimited bootcamps and 650+ courses forever

60
%OFF
Article image
Eden Souza
Eden Souza27/11/2024 05:45
Share

De 12 Horas para 3 Segundos: A Importância da Otimização de Consultas SQL

    Quando comecei a explorar o SQL Server, fiquei impressionado com sua capacidade de processar milhões de linhas rapidamente. Porém, foi ao enfrentar um problema real que percebi a importância de otimizar consultas: um processo que levou 12 horas foi reduzido a 3 segundos com uma simples mudança de abordagem.

    Por que o NOT IN e a Subquery são mais eficientes?

    O SQL Server otimiza subqueries simples, especialmente quando associadas a cláusulas como NOT IN. Diferentemente do LEFT JOIN, que compara linha por linha de duas tabelas e processa resultados intermediários, o NOT IN trabalha diretamente com índices, buscando apenas os dados relevantes para exclusão.

    Aqui está a diferença:

    LEFT JOIN cria uma tabela intermediária, combinando todas as linhas entre duas tabelas e depois filtra os dados. Para grandes volumes de dados, isso consome muitos recursos.

    NOT IN com Subquery extrai os valores da subquery e usa diretamente esses valores para excluir registros da tabela principal, eliminando a necessidade de criar tabelas intermediárias e reduzindo drasticamente o tempo de processamento.

    O problema inicial: um código correto, mas lento

    Com dados do MEC sobre universidades, meu objetivo era identificar cursos de 2022 não presentes em 2021. O LEFT JOIN levou 12 horas.

    Código inicial (12 horas):

    SELECT DISTINCT CURSO_2022 
    FROM (
    SELECT DISTINCT db_2022.NO_CINE_ROTULO 
    FROM dbo.MICRODADOS_CADASTRO_CURSOS_2022 AS db_2022 
    LEFT JOIN dbo.MICRODADOS_CADASTRO_CURSOS_2021 AS db_2021 ON db_2021.NO_CINE_ROTULO = db_2021.NO_CINE_ROTULO 
    WHERE db_2022.NO_CINE_ROTULO ISNULL
    ) AS A
    

    Solução otimizada (3 segundos):

    SELECT DISTINCT NO_CINE_ROTULO 
    FROM dbo.MICRODADOS_CADASTRO_CURSOS_2022 
    WHERE NO_CINE_ROTULO NOT IN 
    (SELECT NO_CINE_ROTULO 
    FROM dbo.MICRODADOS_CADASTRO_CURSOS_2021)
    

    O que aprendi:

    Nem sempre o mais complexo é o mais eficiente.

    Entender como o SQL Server processa consultas é essencial para soluções rápidas.

    Testar diferentes abordagens pode otimizar consultas mesmo quando já estão corretas.

    SQL Server é um aliado poderoso! A redução de 12 horas para 3 segundos não é só técnica, é transformadora.

    Já enfrentou desafios semelhantes? Compartilhe nos comentários! 🚀

    Share
    Comments (0)