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

UNION ALL so với OR điều kiện trong truy vấn máy chủ sql

Vấn đề là bạn đang chỉ định hai điều kiện với OR áp dụng cho các bảng riêng biệt trong truy vấn của bạn. Do đó, tìm kiếm chỉ mục không phân bổ phải trả lại hầu hết hoặc tất cả các hàng trong bảng lớn của bạn vì logic HOẶC có nghĩa là chúng cũng có thể khớp với mệnh đề điều kiện trong bảng thứ hai.

Nhìn vào kế hoạch thực thi SQL trong cả ba ví dụ trên và lưu ý số hàng xuất phát từ chỉ mục không phân tán tìm kiếm từ bảng lớn. Kết quả cuối cùng có thể chỉ trả về 1.000 hoặc ít hơn trong số 800.000 hàng trong bảng nhưng mệnh đề OR có nghĩa là nội dung của bảng đó phải được tham chiếu chéo với điều kiện trong bảng thứ hai vì OR có nghĩa là chúng có thể cần thiết cho cuối cùng đầu ra truy vấn.

Tùy thuộc vào kế hoạch thực hiện của bạn, tìm kiếm chỉ mục có thể kéo ra tất cả 800.000 hàng trong bảng lớn vì chúng cũng có thể phù hợp với các điều kiện của mệnh đề OR trong bảng thứ hai. UNION ALL là hai truy vấn riêng biệt với một bảng, mỗi truy vấn chỉ mục phải xuất ra tập kết quả nhỏ hơn có thể phù hợp với điều kiện cho truy vấn đó.

Tôi hy vọng điều này có ý nghĩa. Tôi đã gặp phải tình huống tương tự khi cấu trúc lại các câu lệnh SQL chạy chậm.

Chúc mừng bạn,

Andre Ranieri



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tập lệnh nhanh trả về tất cả các thuộc tính từ SERVERPROPERTY () trong SQL Server 2017/2019

  2. Giới thiệu về các hàm có giá trị bảng nội tuyến (ITVF) trong SQL Server

  3. Tìm hiểu xem một bảng có được phân vùng trong SQL Server (T-SQL) hay không

  4. Cập nhật nhiều bảng trong SQL Server bằng INNER JOIN

  5. Không thể tạo phiên bản của nhà cung cấp OLE DB Microsoft.Jet.OLEDB.4.0 cho máy chủ được liên kết rỗng