Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MYSQL - Różnica między IN a EXIST

ISTNIEJE

EXISTS dosłownie służy do sprawdzania istnienia określonych kryteriów. W obecnym standardowym SQL pozwoli ci określić więcej niż jedno kryterium porównania - IE, jeśli chcesz wiedzieć, kiedy oba col_a i col_b pasują - co czyni je nieco silniejszymi niż klauzula IN. MySQL IN obsługuje krotki, ale składnia nie jest przenośna, więc EXISTS jest lepszym wyborem zarówno ze względu na czytelność, jak i przenośność.

Inną rzeczą, o której należy pamiętać w przypadku funkcji EXISTS, jest to, jak to działa — EXISTS zwraca wartość logiczną i zwraca wartość logiczną przy pierwszym dopasowaniu. Więc jeśli masz do czynienia z duplikatami/wielokrotnościami, EXISTS będzie szybsze do wykonania niż IN lub JOIN, w zależności od danych i potrzeb.

W

IN jest cukrem składniowym dla klauzul OR. Chociaż jest to bardzo przychylne, istnieją problemy z obsługą wielu wartości dla tego porównania (na północ od 1000).

NIE

Operator NOT po prostu odwraca logikę.

Podzapytania a JOIN

Mantra „zawsze używaj złączeń” jest błędna, ponieważ JOIN ryzykuje zawyżenie zestawu wyników, jeśli istnieje więcej niż jeden rekord podrzędny przeciwko rodzicowi. Tak, możesz użyć DISTINCT lub GROUP BY, aby sobie z tym poradzić, ale jest bardzo prawdopodobne, że zapewnia to korzyści płynące z użycia opcji JOIN. Poznaj swoje dane i informacje o tym, czego oczekujesz od zestawu wyników — to jest klucz do pisania SQL, które działa dobrze.

Aby powtórzyć, że wiesz, kiedy i dlaczego wiedzieć, czego użyć — LEFT JOIN IS NULL to najszybsza lista wykluczeń w MySQL jeśli porównywane kolumny NIE dopuszczają wartości null , w przeciwnym razie opcja NOT IN/NOT EXISTS jest lepszym wyborem.

Odniesienie:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wiele COUNT() dla wielu warunków w jednym zapytaniu (MySQL)

  2. Dlaczego to zapytanie sql nie zwraca żadnych wyników porównujących liczby zmiennoprzecinkowe?

  3. Uciekanie nazw kolumn w wyciągach PDO

  4. Praktyczność wielu baz danych na klienta a jedna baza danych

  5. najmniejszy typ mysql, który obsługuje pojedynczy dziesiętny