【发布时间】:2012-08-28 22:59:18
【问题描述】:
我很难理解您可以通过 SQL Server Management Studio 获得的执行计划中的提示。这是一个示例(简化,但包含所有内容)
索引搜索(非集群)
谓词
PROBE([Bitmap1047], ScheduleId)
对象
IX_Date
输出列表
ScheduleId 日期
寻找谓词
日期>=‘2012-01-02’日期
- ScheduleId 是一个基于 guid 的外键。
- IX_Date 是一个包含 Date、ScheduleId 和 INCLUDE Hours 的索引
对我来说,上面看起来很不错。 Index Seek 应该不错。它达到了相关指数。但是,此项目占用了很大一部分执行时间(否则我不会费心去理解它)。这让我感到困惑,我怀疑这是因为在阅读本文时有一些基本的东西我不明白。
谁能帮我解释一下?
【问题讨论】:
-
Index Seek 返回的“实际行数”和“估计行大小”是多少?
-
我更新了问题以包含此信息。
-
你能发布完整的查询计划吗?
-
嗨,贾斯汀,谢谢,但恐怕我已经没有直接可用的查询计划了,那是很久以前的事了。但问题也更多是关于如何阅读而不是分析具体问题。
-
这里,只有查询的日期部分可以用于索引查找,PROBE(...) 条件应用于匹配日期部分的所有行。请参阅blogs.msdn.com/b/craigfr/archive/2006/07/07/652668.aspx 以获取有关多列索引中列顺序的好文章以获得良好的提示。在这里可能不可用,因为我不知道 PROBE-Statement 是否是相等比较。
标签: sql-server-2008 indexing ssms sql-execution-plan