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

Truy vấn con với EXISTS so với IN - MySQL

Giải thích kế hoạch sẽ chỉ cho bạn lý do chính xác tại sao bạn nên sử dụng Exists . Thông thường câu hỏi đi kèm Tồn tại so với Đếm (*) . Tồn tại nhanh hơn. Tại sao?

  • Đối với các thách thức do NULL đưa ra:khi truy vấn con trả về Null , đối với IN toàn bộ truy vấn trở thành Null . Vì vậy, bạn cần phải xử lý điều đó. Nhưng sử dụng Exist , nó chỉ là một false . Dễ dàng hơn để đối phó. Đơn giản chỉ cần IN không thể so sánh bất cứ thứ gì với Null nhưng Tồn tại có thể.

  • ví dụ. Tồn tại (Chọn * từ bảng của bạn trong đó bla ='blabla'); bạn nhận được true / false vào thời điểm một lần truy cập được tìm thấy / khớp .

  • Trong trường hợp này IN loại chiếm vị trí của Count (*) để chọn TẤT CẢ khớp các hàng dựa trên WHERE bởi vì nó so sánh tất cả các giá trị.

Nhưng cũng đừng quên điều này:

  • TỒN TẠI thực thi ở tốc độ cao đối với IN :khi kết quả truy vấn con rất lớn.
  • IN đi trước EXISTS :khi kết quả truy vấn con rất nhỏ.

Tham khảo để biết thêm chi tiết:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể thực hiện kết nối vì máy đích đã chủ động từ chối nó (PHP / WAMP)

  2. Tại sao tôi không nên sử dụng các hàm mysql_ * trong PHP?

  3. Thêm 2 giờ vào thời gian hiện tại trong MySQL?

  4. Ví dụ về SUBDATE () - MySQL

  5. MySQL xử lý ORDER BY và LIMIT trong một truy vấn như thế nào?