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

dlaczego sql z 'exists' działa wolniej niż 'in' przy użyciu MySQL

Myślę, że masz trochę zamieszania, masz zły pomysł, „EXISTS” działa szybciej niż „IN” i staram się, abyś zrozumiał powód..

EXISTS zwraca wartość logiczną i zwraca wartość logiczną w pierwszym dopasowaniu. Więc jeśli masz do czynienia z duplikatami/wielokrotnościami, „EXISTS” będzie szybsze niż „IN” lub „JOIN” w zależności od danych i potrzeb.

Natomiast „IN” jest cukrem składniowym dla klauzul OR. Chociaż jest to bardzo wygodne, występują problemy z obsługą wielu wartości dla tego porównania (na północ od 1000). W przypadku duplikatów/wielokrotności „IN” sprawdza wszystkie istniejące wartości, co naturalnie zajmuje więcej czasu na wykonanie niż „ISTNIEJE”, dlatego „IN” jest zawsze stosunkowo wolniejszy niż „ISTNIEJE”.

Mam nadzieję, że wyjaśniłem twoje zmieszanie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Symulowanie grup przechwytywania wyrażeń regularnych w mysql

  2. wyświetlanie dnia poprzez procedurę składowaną

  3. Co oznacza klauzula SQL GROUP BY 1?

  4. Jak porównywać wydajność MySQL za pomocą SysBench?

  5. BŁĄD 1452 (23000):Nie można dodać lub zaktualizować wiersza podrzędnego:ograniczenie klucza obcego nie powiodło się