SQL为什么预估执行计划与真实执行计划会有差异

 我来答
SQL的艺术
2018-04-24 · SQL写多了就会在追求极致
SQL的艺术
采纳数:2040 获赞数:3324

向TA提问 私信TA
展开全部
第一种,就是优化器的输出结果,成为预估执行计划,里面的操作符或者步骤都是逻辑步骤,因为他们代表着执行计划在优化器中的视图,但是并不表现在实际执行中物理层面的发生。
另外一种计划是表示查询实际执行的输出结果。这种类型叫做实际执行计划,表示查询在实际执行时发生的事情。
这两个计划显示独立的不同的结果集,但是可以看出有巨大的相同之处。大部分情况下,相同的开销的相同的操作符会出现在两种执行计划中。但是当发生重编译,SQLServer会删除计划缓存中的计划并重建它,此时两者就会有明显的差异。这种情况通常发生于统计信息的更改,或存储引擎在处理查询时发生的其他事情。
预估执行计划是存放在计划缓存中的计划,所以对于实际执行计划,只能通过捕捉查询运行的时候产生的执行计划。预估计划从不直接访问数据,但是它对大型的、复杂的、可能运行很久的查询分析相当有效。但是实际计划是首选的,因为它能显示很多运行过程中重要的统计信息如特定操作符实际访问的行数。通常情况下,这种额外的信息使得实际计划成为最常用的方式,但是预估计划机器重要,特别是因为可以从计划缓存中获取。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式