SQL – Not IN ou Not EXISTS quando usar?

SQL – Not IN ou Not EXISTS quando usar?

26 de fevereiro de 2017 3 Por Ramos de Souza Janones

Muitos se perguntam qual o melhor e quando usar NOT IN ou NOT EXISTS, vamos tentar explicar:

  • Qual dos dois é melhor quando se considera o desempenho?
  • Em quais ocasiões devo usar um e outro?

Vai depender da situação. O not in é recomendado quando você já tem os valores e passa como parametro, por exemplo:

select * from tbl wherenot in (1,3,7)

Agora se você for fazer um subselect recomendo usar o not exists, pois no primeiro resultado que ele encontrar ele já irá validar e passar para o próximo registro.

select * from user u where not exists (select 1 from player p where p.= u.id limit 1)

Como eu não preciso dos campos da tabela player o retorno 1 fica mais rapido do que *. O limite 1 (muda a forma de escrever de acordo com o banco de dados) vai fazer com que ao encontrar 1 registro já seja o suficiente para dizer que existe. Update: em algumas situações o limit 1 pode deixar mais rápido.

Um outro caso:

NOT IN

SQL> select count(*) from emp_master where emp_nbr not in ( select mgr_nbr from emp_master ); COUNT(*) ———-

NOT EXISTS

SQL> select count(*) from emp_master T1 where not exists ( select 1 from emp_master T2 where t2.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 NULL fazem desde que NULL! = NULL no SQL, a cláusula NOT IN não retorna nenhum registro de volta.

Os cursos online de programação e tecnologia mais recomendados para 2019

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.

 

LEIA TAMBÉM:  SQL - Entendendo JOINS

Outros tutoriais e dicas sobre PHP:

Subscribe to our mailing list

* indicates required


Além de PHP e MySQL, deseja receber outro tema?

LEIA TAMBÉM:  Oracle e Delphi
Email Format


Ramos de Souza Janones

Janones, é um empreendedor brasileiro apaixonado por empreendedorismo e tecnologia. Ao longo dos anos trabalhando com o desenvolvimento de softwares desktop desde a linguagem Clipper, passando pelo Delphi e atualmente com Java.

Optou pela formação de Publicidade e Marketing por sua segunda empresa de tecnologia ter participado do "boom" da internet nos anos 90 e na procura de melhorar seus conhecimentos em negócios.

Em razão da principal formação e profundos conhecimentos em programação e banco de dados, é capaz de realizar o desenvolvimento de aplicativos web, desktop e mobile com maior criatividade e inovação que profissionais de desenvolvimento com uma formação única e mais especifica, dedicada somente ao desenvolvimento de softwares.

Com toda sua experiência com empresas de software, sua formação e paixão por negócios escreveu o livro "Marketing para Empresas e Profissionais de Software", publicado pela editora carioca Ciência Moderna em 2012. Além de outros livros sobre programação.
Sumário
SQL - Not IN ou Not EXISTS quando usar?
Nome do artigo
SQL - Not IN ou Not EXISTS quando usar?
Descrição
Neste tutorial vamos explicar quando usar NOT IN ou NOT EXISTS em SQL.
Autor
Nome
Ramos da Informática
Logo