статистик в формате база.схема.таблица.статитика сбацал вот такое (см ниже), но при больших объемах очень долго... подскажте можно ли 4 cross apply по xml превратить в 1? (SQL 2016 EE, trace 8666 уже не нужен)
WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/showplan' AS p)
SELECT distinct
StatsUsedwszDb.XMLCol.value(N'@FieldValue', 'NVarChar(64)') AS wszDb
,StatsUsedwszSchema.XMLCol.value(N'@FieldValue', 'NVarChar(64)') AS wszSchema
,StatsUsedwszTable.XMLCol.value(N'@FieldValue', 'NVarChar(128)') AS wszTable
,StatsUsedwszStatName.XMLCol.value(N'@FieldValue', 'NVarChar(128)') AS StatsName
--,qt.text
FROM
sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) qp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) qt
CROSS APPLY query_plan.nodes(N'//p:Field[@FieldName="wszDb"]') StatsUsedwszDb(XMLCol)
CROSS APPLY query_plan.nodes(N'//p:Field[@FieldName="wszSchema"]') StatsUsedwszSchema(XMLCol)
CROSS APPLY query_plan.nodes(N'//p:Field[@FieldName="wszTable"]') StatsUsedwszTable(XMLCol)
CROSS APPLY query_plan.nodes(N'//p:Field[@FieldName="wszStatName"]') StatsUsedwszStatName(XMLCol)
WHERE
--QT.dbid = DB_ID() and
qp.query_plan is not NULL
and StatsUsedwszSchema.XMLCol.value(N'@FieldValue', 'NVarChar(64)') NOT IN (N'sys')
and StatsUsedwszTable.XMLCol.value(N'@FieldValue', 'NVarChar(64)') NOT IN (N'sysidxstats',N'syssingleobjrefs',N'sysobjvalues',N'syscolpars',N'sysschobjs',N'sysiscols',N'sysschobjs')
Быстро не будет в любом случае. Желаемое можно получить так: with xmlnamespaces(default 'http://schemas.microsoft.com/sqlserver/2004/07/showplan') select st.[Database], st.[Schema], st.[Table], st.[Statistics] from sys.dm_exec_cached_plans cp cross apply (select try_cast(query_plan as xml) from sys.dm_exec_text_query_plan(cp.plan_handle, default, default)) qp (query_plan) cross apply ( select t.x.value('@Statistics', 'sysname'), t.x.value('@Database', 'sysname'), t.x.value('@Schema', 'sysname'), t.x.value('@Table', 'sysname') from qp.query_plan.nodes('//OptimizerStatsUsage/StatisticsInfo') t(x) ) st ([Statistics], [Database], [Schema], [Table]) order by st.[Database], st.[Schema], st.[Table], st.[Statistics];
Спасибо.
Обсуждают сегодня