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

mysql CHỌN KHÔNG TRONG () - tập hợp rời rạc?

Bạn nên sử dụng không tồn tại:

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)

Sử dụng NOT IN không phải là phương pháp tốt nhất để thực hiện việc này, ngay cả khi bạn chỉ kiểm tra một phím. Lý do là nếu bạn sử dụng NOT EXISTS, DBMS sẽ chỉ phải kiểm tra các chỉ số nếu các chỉ số tồn tại cho các cột cần thiết, trong khi đối với NOT IN, nó sẽ phải đọc dữ liệu thực tế và tạo ra một tập hợp kết quả đầy đủ mà sau đó cần được kiểm tra .

Sử dụng LEFT JOIN và sau đó kiểm tra NULL cũng là một ý tưởng tồi, nó sẽ rất chậm khi các bảng lớn vì truy vấn cần thực hiện toàn bộ phép nối, đọc đầy đủ cả hai bảng và sau đó loại bỏ rất nhiều bảng. Ngoài ra, nếu các cột cho phép giá trị NULL, việc kiểm tra NULL sẽ báo cáo dương tính giả.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để sử dụng một hàm SQL với INNER JOIN trong MySQL?

  2. Lưu trữ dữ liệu thống kê, tôi cần DECIMAL, FLOAT hay DOUBLE?

  3. Lấy các bản ghi trống bằng SQL

  4. Neo4j - Tạo mối quan hệ bằng Cypher

  5. SQL:đếm tất cả các bản ghi có giá trị xuất hiện liên tiếp cho từng bộ thiết bị và trả về số lượng cao nhất