我有一个巨大的(数百万行)表,其中包含以下列:
[When] datetime2(0),
[What] tinyint,
[Who] bigint
它基本上是一个事件表(“What”),一次发生在各种实体(“Who”)(“When”)。'What' 有大约 10 个不同的值——它是一个枚举。目前“谁”有大约 10,000 个值。
我希望能够查询此表,以询问某个时间之间一个或多个实体是否发生了某些事情。例如,[What = 0, 1, 2, 3] 在 [When = '2012-10-01' 到 '2012-11-01'] 之间是否发生在 [Who = 0, 1, 2, 3] 上。
我正在寻找有关如何最好地索引此表的建议。我相当确定复合索引是要走的路,但我不确定确切的配置。例如,列顺序应该是什么?我读过“最有选择性”的列应该放在左边,我认为在这种情况下应该是 [When]、[Who]、[What]。它是否正确?
抱歉,如果这个问题看起来含糊不清,但我将不胜感激。我正在使用 SQL Server 2012。