[help] select语句没有用到组合索引。
表PagePermission: ID, AdminID, PageID, LastUpdateTime。
其中:ID是主键, (AdminID, PageID)是索引,并且非聚集、不唯一。
执行如下sql语句,没有用到(AdminID, PageID)索引。
--执行下面语句,看一下AdminID = 2在里面占了百分之多少。复合索引只记录第一个索引字段的统计,很可能是因为Admin=2的记录占的比较多,所以没走索引
select AdminID, COUNT(*)
from PagePermission
GROUP BY AdminID
ORDER BY COUNT(*) DESC
--执行下面语句,应该会走索引Seek
SELECT ID, [Admin], PageID
FROM tb
WHERE AdminID = 2 AND PageID = 3
--如果改成唯一索引,很明显,具有高选择性,就会走索引
--就这个优化而言,楼主创建的索引中包含LastUpdateTime即可
CREATE INDEX IX_tb_AdminID_PageID ON dbo.tb
(
AdminID,
PageID
) INCLUDE(LastUpdateTime)
GO