LCJ*_*LCJ 1 xml sql-server execution-plan sql-server-2012 plan-cache
我正在尝试找出具有Probe Residual
.
需要了解以下内容
Probe Residual
以下是我的一次尝试——但我被困在获取其他细节上。如何获取这些详细信息?
注意:我使用的是 SQL Server 2012
WITH XMLNAMESPACES
(
DEFAULT 'http://schemas.microsoft.com/sqlserver/2004/07/showplan'
)
SELECT
DECP.cacheobjtype,
DECP.objtype,
DECP.plan_handle,
DEQP.objectid,
DEQP.query_plan,
DEST.[text]
FROM sys.dm_exec_cached_plans AS DECP
CROSS APPLY sys.dm_exec_query_plan(DECP.plan_handle) AS DEQP
CROSS APPLY sys.dm_exec_sql_text(DECP.plan_handle) AS DEST
WHERE
1 = DEQP.query_plan.exist(
'//RelOp[
@PhysicalOp = "Hash Match"
]')
Run Code Online (Sandbox Code Playgroud)
甲探头残余例
下面引用 Grant Fritkey 和 Rob Farley 的博客/文章
您想要做的是在交叉应用中使用nodes() 方法(xml 数据类型)在RelOp
节点上切碎,然后您可以使用value() 方法(xml 数据类型)来获取您要查找的属性值。
您正在专门寻找RelOp
具有Hash/ProbeResidual
节点的节点,因此您应该在nodes()
函数的 XQuery 参数的谓词中使用它。
WITH xmlnamespaces(DEFAULT 'http://schemas.microsoft.com/sqlserver/2004/07/showplan')
SELECT DEQP.query_plan,
DEST.text,
RO.X.value('@PhysicalOp', 'nvarchar(50)') as PhysicalOp,
RO.X.value('@LogicalOp', 'nvarchar(50)') as LogicalOp,
RO.X.value('@EstimatedTotalSubtreeCost', 'float') as EstimatedTotalSubtreeCost
FROM sys.dm_exec_cached_plans AS DECP
CROSS APPLY sys.dm_exec_query_plan(DECP.plan_handle) AS DEQP
CROSS APPLY sys.dm_exec_sql_text(DECP.plan_handle) as DEST
CROSS APPLY DEQP.query_plan.nodes('//RelOp[Hash/ProbeResidual]') as RO(X);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
735 次 |
最近记录: |