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

Subquery dengan EXISTS vs IN - MySQL

Explain Plan akan menunjukkan kepada Anda mengapa tepatnya Anda harus menggunakan Exists . Biasanya pertanyaan muncul Exists vs Count(*) . Exists lebih cepat. Mengapa?

  • Berkenaan dengan tantangan yang diberikan oleh NULL:ketika subquery mengembalikan Null , untuk IN seluruh kueri menjadi Null . Jadi, Anda juga harus menanganinya. Tetapi menggunakan Exist , itu hanya sebuah false . Jauh lebih mudah untuk mengatasinya. Cukup IN tidak dapat membandingkan apa pun dengan Null tapi Exists bisa.

  • misalnya Exists (Select * from yourtable where bla = 'blabla'); Anda mendapatkan benar/salah saat satu pukulan ditemukan/cocok .

  • Dalam hal ini IN sort mengambil posisi Count(*) untuk memilih SEMUA baris yang cocok berdasarkan WHERE karena membandingkan semua nilai.

Tapi jangan lupakan ini juga:

  • EXISTS dijalankan dengan kecepatan tinggi melawan IN :ketika hasil subquery sangat besar.
  • IN mendahului EXISTS :ketika hasil subquery sangat kecil.

Rujukan untuk detail selengkapnya:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bidang integer MySQL dikembalikan sebagai string dalam PHP

  2. Bagaimana Fungsi UPPER() Bekerja di MySQL

  3. Bagaimana Mengembalikan Tabel MySQL Tunggal Menggunakan mysqldump?

  4. Bisakah saya menggunakan fungsi untuk nilai default di MySql?

  5. Cara membuat blog di PHP dan database MySQL - Desain DB