man*_*ish 8 sql-server execution-plan plan-cache
我可以想到在计划缓存中存储估计计划而不是实际计划的决定背后的许多原因。但我找不到“正确”的答案。
Tho*_*ger 12
想想“实际”是什么意思。这就是执行该计划实际发生的情况。
实际执行计划的另一个常见名称是“执行后计划”。作为将这种情况关联起来的真实世界示例,假设您计划进行一次越野旅行,因此您可以绘制出将要走的路以及您认为需要多长时间。但由于道路工程和弯路,它不会发生很喜欢你的计划。这就是实际的执行计划:您到达目的地的实际路线。估计的计划将是您认为自己会做的事情,以及您认为应该采取的路线。
你不能存储执行后计划,因为它们只是......执行后。它们包含实际发生的事情的度量,而不是 SQL Server 认为应该发生的事情(估计的执行计划)。
计划缓存实际上只是一个“地图”存储库,它可以重复使用而无需花费昂贵的时间来绘制新的地图。实际执行计划在事后,计划缓存是在事前处理。