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

mysql SELECT NOT IN () - set terpisah?

Anda harus menggunakan tidak ada:

SELECT DISTINCT a, b, c FROM t1 WHERE NOT EXISTS (SELECT NULL FROM t2 WHERE t1.a = t2.a AND t1.b = t2.b AND t1.c = t2.c)

Menggunakan NOT IN bukanlah metode terbaik untuk melakukan ini, bahkan jika Anda hanya memeriksa satu kunci. Alasannya adalah jika Anda menggunakan NOT EXISTS, DBMS hanya perlu memeriksa indeks jika ada indeks untuk kolom yang diperlukan, sedangkan NOT IN harus membaca data aktual dan membuat set hasil lengkap yang selanjutnya perlu diperiksa .

Menggunakan LEFT JOIN dan kemudian memeriksa NULL juga merupakan ide yang buruk, itu akan sangat lambat ketika tabelnya besar karena kueri perlu membuat keseluruhan bergabung, membaca kedua tabel sepenuhnya dan kemudian membuangnya. Juga, jika kolom mengizinkan nilai NULL, pemeriksaan NULL akan melaporkan positif palsu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql - Menjumlahkan jumlah beberapa tabel yang digabungkan

  2. Kinerja MySQL:Tabel tunggal atau beberapa tabel

  3. Apakah mysql_real_escape_string cukup untuk Anti SQL Injection?

  4. Bagaimana cara menjumlahkan string yang dipisahkan koma dalam SQL?

  5. python mysqldb melarikan diri? atau %s?