当您选择包含实际执行计划时,SSMS如何计算显示的查询成本(相对于批处理)?
主要是,我有一些保存的执行计划XML文件,我想彼此进行比较。它必须以某种方式从XML文件中的数据计算该数字,但我没有看到这是如何完成的。如果我打开其中一个包含多个查询的.sqlplan文件,它将正确显示与批处理值相关的文件。我只想自己做这件事。
供参考: 要获取此XML,请在“执行计划”选项卡上右键单击并选择“显示执行计划XML ...”
答案 0 :(得分:4)
这是一个很长的故事,简单地说,成本是数据库以字节为单位执行的物理和逻辑读取量以及CPU的成本。对于每个操作,如果读取来自硬盘我们有物理读取,则必须检索数据,在其他情况下,数据库从高速缓存读取它。这是估算的运营商费用。对于每个步骤,您都要花费它的成本和子树的成本(如果有的话)。然后,成本金额按整个执行计划的百分比计算并显示,这是估计的子树成本( 查询优化器执行此操作的总成本以及在同一子树中执行此操作的所有操作。)
答案 1 :(得分:3)
每个/ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple
都有一个名为StatementSubTreeCost
的属性。
他们按批次计算并计算其份额。
您可以在XML
文件中手动更改它们,使用SQLPLAN
扩展名保存,然后使用SSMS
打开它。您将看到将重新计算相对成本。