Mysql
 sql >> база данни >  >> RDS >> Mysql

Подзаявки с EXISTS срещу IN - MySQL

Обяснете плана би ви показал защо точно трябва да използвате Exists . Обикновено въпросът идва Exists vs Count(*) . Съществува е по-бърз. Защо?

  • По отношение на предизвикателствата, представени от NULL:когато подзаявката връща Null , за IN цялата заявка става Null . Така че трябва да се справите и с това. Но използвайки Exist , това е просто false . Много по-лесно за справяне. Просто IN не може да сравни нищо с Null но Съществува може.

  • напр. Съществува (Изберете * от вашата таблица, където bla ='blabla'); получавате вярно/невярно в момента, едно попадение е намерено/съпоставено .

  • В този случай IN вид заема позицията на Count(*) за да изберете ВСИЧКИ съвпадащи редове въз основа на WHERE защото сравнява всички стойности.

Но не забравяйте и това:

  • СЪЩЕСТВУВА изпълнява се с висока скорост срещу IN :когато резултатите от подзаявката са много големи.
  • IN изпреварва EXISTS :когато резултатите от подзаявката са много малки.

Препратка към за повече подробности:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да инсталирате MySQL на Windows

  2. Как се създава индекс на частта за дата на полето DATETIME в MySql

  3. Съвети за наблюдение на MySQL за Moodle

  4. MySQL Group By и Sum общата стойност на друга колона

  5. MySQL Изберете горните N реда