下面是我的表格
费率
表:
rate_id start_date end_date rate1 rate2 rate3
---------------------------------------------------------
1 2014-08-24 2014-08-28 50 40 30
4 2014-08-28 2014-08-23 45 36 46
1 2014-08-29 2014-08-31 60 45 66
rate_id
是一个外键。
我在这张表上的大部分搜索查询如下所示
select *
from Rate
where rate_id = 1
and start_date between 'xxx' and 'yyy'
rate_id
和 start_date
的组合是唯一的。
- 我可以在 (
rate_id, start_date
) 上创建复合主键吗?它有用吗? - 或者我是否需要在 3 列上创建非聚集索引?
最佳答案
是的,按该顺序在这两列上的复合聚簇主键对于该查询非常有用。
它将允许在覆盖索引上使用简单的范围搜索。要声明为主键,列必须不能为空,并且组合必须是唯一的,但我认为是这种情况。
虽然 rate1、rate2、rate3 看起来很可疑,可能表明您的表不是第一范式。
关于SQL Server - 在这里使用复合主键有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25821676/