SQL: Diferenças entre Not IN e Not EXISTS e Performance

Compartilhe:

Not IN e Not EXISTS são cláusulas SQL ANSI, um padrão da linguagem SQL seguido pela maior parte dos SGBDs (sistema de gerenciamento de banco de dados).

Essa especificação é relativa a uma padronização de nome de cláusulas. Isso significa que o mesmo nome pode ser usado tanto no SQL Server, quanto no PostgreSQL, MySQL e assim por diante. Algumas cláusulas que seguem o mesmo padrão, são o INSERT, UPDATE e DELETE, por exemplo.

LEIA TAMBÉM:

EXISTS é mais performático do que o IN, porém não vem a ser uma boa pratica, depende da sua necessidade….

O in “cria” uma estrutura de or’s na sua condição sql, exp:

Abre em nova aba

select*fromtabela1
whereidtabela in(selectidtabela fromtabela2 wherecondicao =2)

Digamos que existam 5 condições=2 de idtabela nessa tabela2,o bd interpretaria o incomo:

select*fromtabela1 t
innerjointabela2 t2 ont2.idtabela =t.idtabela
whereidtabela =1oridtabela =2oridtabela =3oridtabela =4oridtabela =5

Agora ao usar o existso bd “força”um relacionamento entre as duas tabelas Ficando mais ou menos assim:

select*fromtabela1 t
innerjointabela2 t2 ont2.idtabela =t.idtabela
wherecondicao =2

Vamos usar outro exemplo:

NOT IN

SQL>selectcount(*) fromemp_master whereemp_nbr notin(selectmgr_nbr fromemp_master);COUNT(*)
———-0

 NOT EXISTS

SQL>selectcount(*) fromemp_master T1 wherenotexists(select1fromemp_master T2 wheret2.mgr_nbr =t1.emp_nbr);COUNT(*)
———-9

Agora,existem 9 pessoas que não são gestores. Assim,você pode ver claramente a diferença que valores NULLfazem desde que NULL!=NULLno SQL,a cláusula NOT INnão retorna nenhum registrode volta.

Como aprender a programar,um guia definitivo

Implicações de desempenho:

Ao usar NOT IN,a consulta executa varreduras aninhados de tabela,enquanto que para NOT EXISTS,a consulta pode utilizar um índice dentro da sub-consulta.

LIVROS SQL E BANCO DE DADOS RECOMENDADOS:

1. SQL para Análise de Dados:Técnicas avançadas para transformar dados em insights

2. Sistemas de Banco de Dados

Curso Banco de Dados

 

Conforme mencionado,estes scripts SQL podem ser usados tranquilamente em outros SGBDs,por se tratar de SQL ANSI. Evidentemente que,para mostrar estes mesmos resultados,você terá que ter tabelas e dados iguais.

LEIA TAMBÉM:21 comandos SQL essenciais para programadores e BI

Bons estudos.

Leia também:

Compartilhe:

Ramos da Informática
Ramos da Informáticahttps://ramosdainformatica.com.br
Ramos da Informática é um hub de comunidade sobre linguagens de programação, banco de dados, DevOps, Internet das Coisas, tecnologia da indústria 4.0, Cyber Segurança e Startups.

RECENTES

Claude Sonnet 4.5: Mais Avançado para Programação e Automação

A Anthropic acaba de lançar o Claude Sonnet 4.5,...

AP2 do Google: Desenvolva Pagamentos para agentes de IA

O Google lançou o Agent Payments Protocol (AP2), um...

Curso gratuito de GitHub Copilot para devs e estudantes

A Microsoft abriu as inscrições para o primeiro Bootcamp...

Santander e a Alura oferecem 60.000 bolsas em carreira de tecnologia

Quer dar um salto na sua carreira? O Santander Imersão Digital está...

Google Tradutor desafia o Duolingo com novas ferramentas de aprendizagem de idiomas

O Google está lançando um novo recurso experimental com...

A peça que faltava para agentes de IA autônomos.

Este artigo foi originalmente publicado em: https://www.linkedin.com/newsletters/ezine-dev-ramos-da-inform%25C3%25A1tica-6947960536550526976/ A inteligência...
Newsletter semanal no LinkedIn
EZine Dev Ramos da Informática
Grandes dicas em JavaScript, Node, React, Next, Banco de Dados & IA.
Assinar grátis
Abre em nova aba
spot_img