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! 🚀