【发布时间】:2015-09-19 20:45:45
【问题描述】:
我在一个测试社交网站上工作。我被要求为获取用户关注的页面的查询创建索引。我是索引的新手,所以我创建了三个表并用 4500000 条记录填充它们以进行测试。除了主键和索引之外,这三个表是相同的。表格如图所示:
我对三个表使用相同的查询来获取用户关注的页面。查询是:
Select top 10 PageID from UserFollowPages where UserID='something' order by ID
第一个表有一个由 PageID 和 UserID 组成的唯一聚集索引。
第二个表有一个由 PageID 和 UserID 列组成的唯一非聚集索引。第二个表也有由 ID 列组成的聚集索引。
第三个表具有仅由 UserID 组成的非聚集索引。它还有一个由 ID 组成的聚集索引。
我对三个表执行查询并包含实际的执行计划。三个表格的结果如图所示。
第一个表的第一个查询结果:
第二个表中第二个查询的结果:
第三个表的第三个查询结果:
我有两个问题:
为什么在第三个查询的实际执行计划中显示了一个嵌套循环(内连接)块?
我应该使用三个索引中的哪一个,知道这三个查询的执行时间几乎相同(大约 0.5 秒)?
【问题讨论】:
标签: sql-server database-design indexing