Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

mengapa sql dengan 'ada' berjalan lebih lambat daripada 'dalam' menggunakan MySQL

Saya pikir Anda memiliki sedikit kebingungan, Anda memiliki ide yang salah, 'EXISTS' bekerja lebih cepat daripada 'IN' dan saya mencoba membuat Anda mengerti alasannya..

EXISTS mengembalikan boolean, dan akan mengembalikan boolean pada pertandingan pertama. Jadi jika Anda berurusan dengan duplikat/kelipatan, 'EXISTS' akan lebih cepat dieksekusi daripada 'IN' atau 'JOIN' tergantung pada data dan kebutuhan.

Padahal, 'IN' adalah gula sintaksis untuk klausa OR. Meskipun sangat akomodatif, ada masalah dengan berurusan dengan banyak nilai untuk perbandingan itu (utara 1.000). Dalam kasus duplikat/kelipatan 'IN' memeriksa semua nilai yang ada yang secara alami menghabiskan lebih banyak waktu untuk dieksekusi daripada 'ADA', itu sebabnya 'IN' selalu relatif lebih lambat daripada 'EXISTS'.

Saya harap saya menjelaskan kebingungan Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Fungsi jendela Postgres lag() setara permintaan di MySQL

  2. Mengubah dan menyimpan data pengguna mysql dalam tabel tampilan yang menampilkan data pengguna

  3. MySQL terus mogok

  4. Memigrasikan Database Oracle ke MySQL di AWS, Bagian 1

  5. Mysql 5.7 ERROR 3143 (42000):Ekspresi jalur JSON tidak valid. Kesalahannya ada di sekitar posisi karakter 3