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

MYSQL - Perbedaan antara IN dan EXIST

ADA

EXISTS secara harfiah adalah untuk memeriksa keberadaan kriteria yang ditentukan. Dalam SQL standar saat ini, ini akan memungkinkan Anda untuk menentukan lebih dari satu kriteria untuk perbandingan - IE jika Anda ingin tahu kapan col_a dan col_b keduanya cocok - yang membuatnya sedikit lebih kuat daripada klausa IN. MySQL IN mendukung tupel, tetapi sintaksnya tidak portabel, jadi EXISTS adalah pilihan yang lebih baik untuk keterbacaan dan portabilitas.

Hal lain yang perlu diperhatikan dengan EXISTS adalah cara kerjanya - 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 JOINs tergantung pada data dan kebutuhan.

IN

IN adalah gula sintaksis untuk klausa OR. Meskipun sangat akomodatif, ada masalah dalam menangani banyak nilai untuk perbandingan tersebut (sebelah utara 1.000).

TIDAK

Operator NOT hanya membalikkan logika.

Subkueri vs GABUNG

Mantra "selalu gunakan gabungan" cacat, karena BERGABUNG berisiko menggelembungkan hasil yang ditetapkan jika ada lebih dari satu catatan anak terhadap orang tua. Ya, Anda dapat menggunakan DISTINCT atau GROUP BY untuk menangani hal ini, tetapi kemungkinan besar hal ini memberikan manfaat kinerja menggunakan moot JOIN. Ketahui data Anda, dan apa yang Anda inginkan untuk kumpulan hasil - ini adalah kunci untuk menulis SQL yang berkinerja baik.

Untuk mengulangi mengetahui kapan dan mengapa mengetahui apa yang harus digunakan - LEFT JOIN IS NULL adalah daftar pengecualian tercepat di MySQL jika kolom yang dibandingkan TIDAK dapat dibatalkan , jika TIDAK DI/TIDAK ADA adalah pilihan yang lebih baik.

Referensi:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lakukan kueri dengan bergabung dan nilai yang dipisahkan koma di kolom di Laravel

  2. Cara terbaik untuk MEMASUKKAN banyak nilai di mysqli?

  3. Versi Django MySQLdb tidak cocok dengan _mysql versi Ubuntu

  4. PHP &mySQL - ditulis sebagai «

  5. Skrip pencarian PHP untuk database mySQL, hanya 3 huruf yang berfungsi