Article image
Eden Souza
Eden Souza27/11/2024 05:45
Compartilhe

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

  • #SQL Server
  • #Banco de dados relacional

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

Compartilhe
Comentários (0)