我有一个经常运行的查询。它是一个dynmaic sql查询,因为按更改排序。
SELECT userID, ROW_NUMBER(OVER created) as rownumber
from users
where
divisionID = @divisionID and isenrolled=1
查询的OVER部分可以是:
我应该为:
创建索引我应该在哪里放置此表的索引?
答案 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
开始,因为它将始终使用