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

MYSQL - Разлика между IN и EXIST

СЪЩЕСТВУВА

EXISTS буквално е за проверка за съществуването на определени критерии. В текущия стандартен SQL той ще ви позволи да посочите повече от един критерий за сравнение - Т.Е. ако искате да знаете кога col_a и col_b съвпадат - което го прави малко по-силен от клаузата IN. MySQL IN поддържа кортежи, но синтаксисът не е преносим, ​​така че EXISTS е по-добър избор както за четимост, така и за преносимост.

Другото нещо, което трябва да знаете с EXISTS, е как работи - EXISTS връща булево значение и ще върне булево значение при първото съвпадение. Така че, ако имате работа с дубликати/множества, EXISTS ще бъдат по-бързи за изпълнение от IN или JOIN в зависимост от данните и нуждите.

В

IN е синтактична захар за клаузи ИЛИ. Въпреки че е много удобно, има проблеми с работата с много стойности за това сравнение (на север от 1000).

НЕ

Операторът NOT просто обръща логиката.

Подзаявки срещу JOIN

Мантрата „винаги използвайте обединения“ е погрешна, тъй като JOIN рискува да раздуе набора от резултати, ако има повече от един дъщерен запис срещу родител. Да, можете да използвате DISTINCT или GROUP BY, за да се справите с това, но е много вероятно това да доведе до ползата от използването на JOIN. Познавайте данните си и какво искате за набор от резултати – те са ключови за писане на SQL, който се представя добре.

За да повторим да знаем кога и защо да знаем какво да използваме - LEFT JOIN IS NULL е най-бързият списък за изключване в MySQL ако сравнените колони НЕ могат да бъдат null , в противен случай NOT IN/NOT 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. Избиране на PHP с PDO Извикване на функция-член подготви() при грешка, която не е обект

  2. MySQL блокиране със съхранена процедура, генерираща UID

  3. IN клауза в mysql nodejs

  4. MySQL:Колко място използва полето NULL?

  5. MySql добавянето на присъединяване дава неправилни резултати