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

Hiệu suất SQL trên THAM GIA TRÁI OUTER so với KHÔNG TỒN TẠI

Liên kết của Joe là một điểm khởi đầu tốt. Quassnoi cũng đề cập đến vấn đề này.

Nói chung, nếu các trường của bạn được lập chỉ mục đúng cách HOẶC nếu bạn muốn lọc ra nhiều bản ghi hơn (tức là có nhiều hàng EXIST trong truy vấn con) NOT EXISTS sẽ hoạt động tốt hơn.

EXISTNOT EXISTS cả ngắn mạch - ngay khi bản ghi phù hợp với tiêu chí, nó được bao gồm hoặc được lọc ra và trình tối ưu hóa chuyển sang bản ghi tiếp theo.

LEFT JOIN sẽ tham gia TẤT CẢ HỒ SƠ bất kể chúng có khớp hay không, sau đó lọc ra tất cả các bản ghi không khớp. Nếu bảng của bạn lớn và / hoặc bạn có nhiều JOIN tiêu chí, điều này có thể rất tốn tài nguyên.

Tôi thường cố gắng sử dụng NOT EXISTSEXISTS có thể ở đâu. Đối với SQL Server, INNOT IN tương đương về mặt ngữ nghĩa và có thể dễ viết hơn. Đây là một trong những toán tử duy nhất bạn sẽ tìm thấy trong SQL Server được đảm bảo ngắn mạch.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xóa số khỏi máy chủ sql chuỗi

  2. Biết mối quan hệ giữa tất cả các bảng của cơ sở dữ liệu trong SQL Server

  3. Kết nối SQL Server với PostgreSQL

  4. Cách thực hiện THAM GIA MẶT BẰNG TRÁI trong SQL Server

  5. Bật tác nhân SQL Server qua SSMS