SQL Server Management Studio中的查询成本

4
当您选择包含实际执行计划时,SSMS如何计算查询成本(相对于批处理)值?
主要来说,我有一些已保存的执行计划XML文件,我想将它们彼此进行比较。它必须从XML文件中的数据中以某种方式计算出该数字,但我没有看到这是如何完成的。如果我打开一个包含多个查询的.sqlplan文件,它将正确显示相对于批处理的值。我只是想自己做到这一点。
FYI: 要获取此XML,请在“执行计划”选项卡上右键单击并选择“显示执行计划XML...”。
2个回答

4
这是一个很长的故事,简单来说,成本是数据库在物理和逻辑读取方面以及 CPU 的消耗量。对于每个操作,如果从硬盘中读取数据,则需要检索数据,这就是物理读取;否则,数据库会从缓存中读取数据。这就是“估计运算符成本”。对于每个步骤,您都有其成本以及子树(如果有)的成本。然后将成本金额按整个执行计划的百分比计算并呈现,这就是“估计子树成本”(执行此操作及其前面所有操作的查询优化器的总成本)。 更多信息

3
每个/ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple都有一个名为StatementSubTreeCost的属性。 它们在其批处理中累加并计算其份额。
您可以在XML文件中手动更改它们,将其保存为SQLPLAN扩展名,并使用SSMS打开。您会看到相关成本将被重新计算。

太好了,谢谢!我本来就觉得应该是这样,但第一次尝试计算时没有成功。现在我可以尝试使用XPath技能并比较两个文件了。 - Bryan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接