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

EXISTS so với JOIN và sử dụng mệnh đề EXISTS

EXISTS được sử dụng để trả về một giá trị boolean, JOIN trả về toàn bộ bảng khác

EXISTS chỉ được sử dụng để kiểm tra xem một truy vấn con có trả về kết quả hay không và đoản mạch ngay khi truy vấn đó xảy ra. JOIN được sử dụng để mở rộng tập hợp kết quả bằng cách kết hợp nó với các trường bổ sung từ bảng khác có mối quan hệ với nó.

Trong ví dụ của bạn, các truy vấn tương đương nhau về mặt ngữ nghĩa.

Nói chung, hãy sử dụng EXISTS khi nào:

  • Bạn không cần trả lại dữ liệu từ bảng có liên quan
  • Bạn có lỗi trong bảng liên quan (JOIN có thể gây ra các hàng trùng lặp nếu các giá trị được lặp lại)
  • Bạn muốn kiểm tra sự tồn tại (sử dụng thay vì LEFT OUTER JOIN...NULL tình trạng)

Nếu bạn có các chỉ mục thích hợp, hầu hết thời gian EXISTS sẽ hoạt động giống hệt với JOIN . Ngoại lệ là đối với các truy vấn con rất phức tạp, nơi thường sử dụng EXISTS sẽ nhanh hơn .

Nếu JOIN của bạn khóa không được lập chỉ mục, có thể nhanh hơn khi sử dụng EXISTS nhưng bạn sẽ cần phải kiểm tra trường hợp cụ thể của mình.

JOIN cú pháp cũng dễ đọc hơn và rõ ràng hơn bình thường.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi tên tháng thành số tháng trong SQL Server

  2. Tìm hiểu xem một đối tượng có phải là khóa ngoại với OBJECTPROPERTY () trong SQL Server hay không

  3. Kiểm tra Thư chưa gửi trong SQL Server (T-SQL)

  4. 2 cách lấy thông tin phân vùng cho bảng trong SQL Server (T-SQL)

  5. Làm cách nào để cập nhật Cột danh tính trong SQL Server?