我持有上出现了一次事件,如史表:的SQL Server索引设计
EventType | OccurredOn | Other.. | Data..
--------------------------------------------
1 | 2014/10/02 09:00 | foo | bar
1 | 2014/10/02 10:00 | foo | bar
2 | 2014/10/03 09:00 | foo | bar
1 | 2014/10/04 09:00 | foo | bar
3 | 2014/10/05 09:00 | foo | bar
2 | 2014/10/05 09:00 | foo | bar
4 | 2014/10/05 09:00 | foo | bar
我所有的问题在该表上会的形式为:
select [OccurredOn], [OtherData]
from [Data]
where [EventType] = @type and [OccurredOn] between @start and @end
也许与grouping
和选择聚合数据。
行会按时间顺序几乎总是被插入,当他们被插入了时间顺序,将OccurredOn
应该是合理的“近期” - 即不太远之前已经插入了“最新”行
应该如何我把这个表格索引为有效选择?
大概我的PK应该是聚簇的,并且包括OccurredOn
它,但是没有天然的唯一键,所以大概我需要一个autoincrement int
的列呢?
更新
行而言,该表将有几百万,可能是数以百万计10S
我使用SQL Server 208R2
首先,[不要使用'BETWEEN'进行日期范围查询](http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/what-do-between-and-the-devil-have-in-common.aspx) 。 – 2014-10-02 16:51:45
感谢protip – 2014-10-02 16:53:56