Chu*_*nes 3 sql-server sql-server-2008
我有一个表有一堆列,但两个相关的是:
Due_Amount MONEY
Bounced_Due_Amount MONEY
我有一个SQL查询,如下所示
SELECT * FROM table WHERE (Due_Amount > 0 OR Bounced_Due_Amount > 0)
为SQL Server 2008提供此表的最佳索引是否是包含索引中的两列的索引,还是应该在每列上放置单独的索引?
索引不能像OR一样用在OR上.试试这个:
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
Run Code Online (Sandbox Code Playgroud)
在Due_Amount上有一个索引,在Bounced_Due_Amount上有另一个索引.
重新设计你的桌子可能会更好.在不知道你的业务逻辑或表的情况下,我猜你可能会有一个"Bounced"Y/N或1/0 char/bit列,只有一个"Due_Amount"列.在"Due_Amount"上添加索引,查询将只是:
SELECT * FROM table WHERE Due_Amount > 0
Run Code Online (Sandbox Code Playgroud)
你仍然可以区分Bounced或not row.如果您需要同时具有退回和未退回到期金额,则此操作无效.
| 归档时间: |
|
| 查看次数: |
1281 次 |
| 最近记录: |