为什么我的非聚集索引没有被使用

时间:2015-02-14 18:51:48

标签: sql-server

我是sql server的新手。我使用sql server express 2014.我从来不必处理索引。

我已经制作了以下表结构来试验索引

enter image description here

鉴于该表应该存储学生为每个作业评分的分数,讲师可能想要过滤分配ID上的数据,以便查看例如在特定作业中得分最高的人。

以下屏幕截图显示了我创建的查询和非聚集索引。然而,执行计划表明它没有被使用为什么?

enter image description here

这是定义 enter image description here

2 个答案:

答案 0 :(得分:0)

索引与查询匹配,但表格非常小​​。扫描它访问其唯一的页面。使用索引可以访问两个页面。

使索引覆盖或添加更多数据。两者都是尝试索引并理解它们的好方法。你应该尝试两种方式。

答案 1 :(得分:0)

如果您有少量数据,例如此处的5行,则实际上并未使用索引,因为整个数据很可能只有1页。因为您选择“*”,所以必须访问整个页面,因为非聚集索引只包含其中的键,因此使用索引获取该页面可能会贵一倍。

通过首先运行“set statistics io on”,您可以测试使用和不使用索引的页数。运行语句时,您将在“消息”选项卡中看到页数。要在使用索引时进行比较,您可以运行“select * from Submissions with(index(index_name_here)),其中AssignmentID = 2”