向sql server添加索引

时间:2009-11-16 16:49:13

标签: sql-server indexing

我有一个经常运行的查询。它是一个dynmaic sql查询,因为按更改排序。

SELECT userID, ROW_NUMBER(OVER created) as rownumber
from users
where
  divisionID = @divisionID and isenrolled=1

查询的OVER部分可以是:

  • 用户ID
  • 创建

我应该为:

创建索引
  • divisionID + isenrolled
  • divisionID + isenrolled + each_sort_by_option?

我应该在哪里放置此表的索引?

2 个答案:

答案 0 :(得分:2)

我从

开始
CREATE INDEX IX_SOQuestion ON dbo.users (divisionID, isenrolled) INCLUDE (userID, created)
  • created排名与WHERE子句无关,因此可能只是包含它(因此它被覆盖)而不是键列中的排名。无论如何都需要内部排序,为什么要把钥匙做大?

  • 也可以包含其他排序列

  • userid仅用于输出,因此包含它

  • 如果有点,可能会注册到INCLUDE。只有2个状态(OK,3个为NULL),所以添加到键列有点无意义

答案 1 :(得分:0)

divisionID + isenrolled + userID开始,因为它将始终使用