Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

mysql NOT IN QUERY tối ưu hóa

Sử dụng NOT EXISTS

SELECT p.* 
  FROM TABLE_PRODUCT p
 WHERE p.astatus = 'APAST' 
   AND NOT EXISTS (SELECT NULL
                     FROM TABLE_USER_OWNED_AUCTION uoa
                    WHERE uoa.specific_product_id = p.specific_product_id)

Sử dụng LEFT JOIN/IS NULL

   SELECT p.* 
     FROM TABLE_PRODUCT p
LEFT JOIN TABLE_USER_OWNED_AUCTION uoa ON uoa.specific_product_id = p.specific_product_id
    WHERE p.astatus = 'APAST' 
      AND uoa.own_id IS NULL

Giải thích

Truy vấn tối ưu nhất có thể được xác định bằng cách nếu các cột được so sánh giữa hai bảng là NULLable (IE:nếu các giá trị của specific_product_id trong một trong hai bảng có thể là NULL ).

Phụ lục

Khi truy vấn tối ưu đã được xác định, hãy xem tạo chỉ mục (có thể bao gồm các chỉ mục) ít nhất là:

  • specific_product_id
  • TABLE_PRODUCT.astatus


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có thể sử dụng Biến do người dùng xác định MySql trong .NET MySqlCommand không?

  2. Class.forName (com.mysql.jdbc.Driver) không tìm kiếm trong tệp jar cho lớp

  3. Mysql kết nối trong hai bảng

  4. Có cách nào để sử dụng các đối tượng json trong SQL không

  5. Tên bảng phân biệt chữ hoa chữ thường MySQL trên MacOS với hệ thống tệp phân biệt chữ hoa chữ thường