Formação Oracle DBA Completa


SQL – Not IN ou Not EXISTS quando usar?

SQL – Not IN ou Not EXISTS quando usar?

26 de fevereiro de 2017 1 Por Ramos de Souza Janones
Powered by Rock Convert

Instruções SQL Not IN ou Not EXISTS quando usar e quais são as melhores práticas para o desenvolvimento de software de qualidade.

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.

VAI GOSTAR: Guia Jurídico Definitivo para Startups

VEJA TAMBÉM: Sucesso na Carreira com o LinkedIn

RECOMENDAMOS: Curso de Desenvolvimento de Games Completo

LEIA: Como Aprender Java e ir além do mercado de trabalho tradicional


Um outro caso:

Powered by Rock Convert

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.

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:  Como otimizar consultas MySQL e deixar sua aplicação mais rápida

Banco de dados

Artigos e dicas sobre banco de dados que você vai gostar:

MongoDB

– Principais diferenças entre MongoDB e MySQL ou outro RDBMS

– Southbank Software apresenta dbKoda: uma ferramenta de desenvolvimento Open Source para MongoDB

MySQL e Instruções SQL em geral

– SQL e Regex – Entenda quando e como usar em instruções SQL

– MySQL – Manter o formato Date e DateTime em formato dd/mm/Year e dd/mm/Year:HH:mm:ss

– SQL – O que são VIEWS SQL, vantagens e desvantagens

– Instrução Insert MySQL e JSON com todos os bancos brasileiros

– PHP e MySQL – Entendendo as codificações iso-8859-1 e UTF-8 e outras

– Como redefinir a senha de root do MySQL ou do MariaDB

– Para que serve uma MySQL Transaction?

– Banco de Dados – Índices desnecessários no banco são um problema?

– Entenda a diferença entre LIKE, IN e BETWEEN no MySQL

– LinkedIn desenvolve a ferramenta MySQL Query Analyzer

– Como otimizar consultas MySQL

– Quando é interessante desnormalizar o banco de dados?

– Entenda Views em SQL, vantagens e desvantagens

– O que é normalização de banco de dados

– Por que não devemos usar funções do tipo mysql_*

SQL – Entenda as diferenças entre aspas simples e duplas

– SQL – Not IN ou Not EXISTS quando usar?

– SQL – Entendendo JOINS

– PHP Do Zero Ao Profissional – Análise do Curso

Subscribe to our mailing list

* indicates required


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

Email Format


Siga os bons!

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.

Últimos posts por Ramos de Souza Janones (exibir todos)

Sumário
SQL - Not IN ou Not EXISTS quando usar?
Nome do artigo
SQL - Not IN ou Not EXISTS quando usar?
Descrição
Instruções SQL Not IN ou Not EXISTS quando usar e quais são as melhores práticas para o desenvolvimento de software de qualidade.
Autor
Nome
Ramos da Informática
Logo

Frontend Do Zero Ao Profissional