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

(Các) chỉ mục tốt nhất để sử dụng cho Câu lệnh OR trong SQL Server

Không thể sử dụng Chỉ mục trên HOẶC như vậy. hãy thử cái này:

SELECT * FROM table WHERE Due_Amount > 0
UNION ALL  
SELECT * FROM table Bounced_Due_Amount > 0
--use "UNION" if Due_Amount and Bounced_Due_Amount could both >0 at any one time

có một chỉ mục trên Due_Amount và một chỉ mục khác trên Bounced_Due_Amount.

Có thể tốt hơn nếu thiết kế lại bảng của bạn. Nếu không biết bảng logic kinh doanh của bạn hoặc bảng, tôi sẽ đoán rằng bạn có thể có cột Y / N "bị trả lại" hoặc 1/0 char / bit và chỉ là cột "Số tiền phải trả". Thêm chỉ mục trên "Due_Amount" đó và truy vấn sẽ chỉ là:

SELECT * FROM table WHERE Due_Amount > 0

bạn vẫn có thể phân biệt giữa hàng bị trả lại hay không hàng. Điều này sẽ không hoạt động nếu bạn cần có cả số tiền bị trả lại và số tiền không bị trả lại cùng một lúc.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Câu lạc bộ các hàng trong các ngày trong tuần

  2. Kích hoạt SQL Server - thứ tự thực thi

  3. Chèn vấn đề đồng tiền - Môi trường đa luồng

  4. Đường ống được đặt tên là gì?

  5. Cách khắc phục “câu lệnh ALTER TABLE SWITCH không thành công”