微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从“显示执行计划 xml”

如何解决从“显示执行计划 xml”

我需要将 sql Server 中的“show execution plan xml”查询中的 select statment、join、where 和 order by 中使用的列表列获取到表中。

例如查询

Select a.id,a.name,a.gender,a.marks,b.address
From #temp a
Inner join #temp1 b
On a.id=b.id
Where id=1

输出应该是:

Select- id,name,gender,marks(from #temp) 
Address(from #temp1) 
Join - id
Where- id

全部放在一张桌子上。

解决方法

以代码为例:

DECLARE @PLAN_XML XML;

--> put here the query you wanted to examine the plan
SELECT DISTINCT name,object_id,create_date 
FROM sys.objects;

SELECT @PLAN_XML = query_plan 
FROM   sys.dm_exec_requests 
       OUTER APPLY sys.dm_exec_query_plan(plan_handle) 
WHERE session_id = @@SPID;

WITH   XMLNAMESPACES (DEFAULT 'http://schemas.microsoft.com/sqlserver/2004/07/showplan' )
SELECT CONCAT(x.p.value('(@Schema)','sysname'),N'.',x.p.value('(@Table)',x.p.value('(@Column)','sysname')) AS OUTPUT_COLUMN
FROM   @PLAN_XML.nodes( 'ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple[1]/QueryPlan/RelOp/OutputList/*' ) x(p)

这会给你结果:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。