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

Podzapytania z EXISTS vs IN - MySQL

Plan wyjaśnień pokazałby ci, dlaczego dokładnie powinieneś użyć Exists . Zwykle pytanie brzmi Istnieje vs. Count(*) . Istnieje jest szybszy. Dlaczego?

  • W odniesieniu do wyzwań obecnych przez NULL:gdy podzapytanie zwraca Null , dla IN całe zapytanie staje się Null . Więc musisz sobie z tym poradzić. Ale używając Exist , to tylko fałsz . Dużo łatwiej sobie poradzić. Po prostu IN nie można niczego porównać z Null ale Istnieje może.

  • np. Istnieje (wybierz * ze swojej tabeli, gdzie bla ='blabla'); Prawda/fałsz otrzymujesz w momencie znalezienia/dopasowania jednego trafienia .

  • W tym przypadku IN rodzaj zajmuje pozycję Count(*) aby wybrać WSZYSTKIE pasujące wiersze na podstawie GDZIE ponieważ porównuje wszystkie wartości.

Ale nie zapomnij też o tym:

  • ISTNIEJE wykonuje z dużą szybkością na IN :gdy wyniki podzapytania są bardzo duże.
  • W wyprzedza EXISTS :gdy wynik podzapytania jest bardzo mały.

Więcej informacji na ten temat:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj datę i godzinę JS na datę i godzinę MySQL

  2. CURRENT_DATE Przykłady – MySQL

  3. Nie mogę uzyskać mojego formularza logowania, aby połączyć się poprawnie z bazą danych mySQL

  4. Jak przeprowadzić migrację MySQL z Amazon EC2 do lokalnego centrum danych bez przestojów?

  5. MySQL ERROR 1045 (28000):Odmowa dostępu dla użytkownika 'bill'@'localhost' (przy użyciu hasła:TAK)