Sql server 2008 SQL Server执行计划显示了什么?

Sql server 2008 SQL Server执行计划显示了什么?,sql-server-2008,sql-execution-plan,Sql Server 2008,Sql Execution Plan,有以下代码: declare @XmlData xml = '<Locations> <Location rid="1"/> </Locations>' declare @LocationList table (RID char(32)); insert into @LocationList(RID) select Location.RID.value('@rid','CHAR(32)') from @XmlData.nodes('/Locations/L

有以下代码:

declare @XmlData xml =
'<Locations>
<Location rid="1"/>
</Locations>'

declare @LocationList table (RID char(32));
insert into @LocationList(RID)
select Location.RID.value('@rid','CHAR(32)') 
from @XmlData.nodes('/Locations/Location') Location(RID)

insert into @LocationList(RID)
select A2RID from tblCdbA2
declare@xmldataxml=
'
'
声明@LocationList表(RID char(32));
插入@LocationList(RID)
选择Location.RID.value(“@RID”,“CHAR(32)”)
从@XmlData.nodes('/Locations/Location')位置(RID)
插入@LocationList(RID)
从tblCdbA2中选择A2RID
表tblCdbA2有172810行

我已在SSMS中使用“包括实际执行计划”执行批处理,并运行探查器

计划显示第一次查询的成本相对于批次为88%,第二次为12%,但探查器表示第一次和第二次查询的持续时间分别为17ms和210ms,总时间为229,而不是12和88。发生了什么? 有没有办法在执行计划中确定查询最慢的部分?

持续时间!=成本

成本还包括其他因素,如创建和释放对象(如使用XPath过滤器读取XML)、内存使用、写入、读取、临时表访问等

编辑:

查看您的执行计划,并将鼠标悬停在“成本”最高的部分上。在您的情况下,创建和执行XML读取器和筛选表值函数时,服务器(在编译时间、cpu时间、内存时间等方面)的“成本”最高

另一种尝试是使用SQL Server探查器,监视事件“Showplan All”和“Showplan XML”。通过单击探查器中的“Showplan XML”事件,可以获得与执行计划相同的视图,并通过单击“Showplan All”事件获得额外的详细信息

下面是一篇讨论这些事件的好文章:


很好,但这是否意味着成本不会告诉您查询是好是坏?有没有办法在执行计划中确定查询最慢的部分?