Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Subconsultas com EXISTS vs IN - MySQL


Um Plano de explicação teria mostrado porque exatamente você deveria usar Exists . Geralmente a pergunta vem Exists vs Count(*) . Existe é mais rápido. Por quê?

  • Com relação aos desafios apresentados por NULL:quando subconsulta retorna Null , para IN a consulta inteira se torna Null . Então você precisa lidar com isso também. Mas usando Exist , é apenas um false . Muito mais fácil de lidar. Simplesmente IN não pode comparar nada com Null mas Existe posso.

  • por exemplo. Existe (Selecione * de sua tabela onde bla ='blabla'); você obtém verdadeiro/falso no momento em que um resultado é encontrado/combinado .

  • Neste caso IN meio que toma a posição do Count(*) para selecionar TODOS linhas correspondentes com base em WHERE porque está comparando todos os valores.

Mas também não se esqueça disso:
  • EXISTE é executado em alta velocidade em IN :quando os resultados da subconsulta são muito grandes.
  • EM fica à frente de EXISTS :quando os resultados da subconsulta são muito pequenos.

Consulte para obter mais detalhes: