169 похожих чатов

Доброго дня всем. Хочу из плана кешов получить список всех

статистик в формате база.схема.таблица.статитика сбацал вот такое (см ниже), но при больших объемах очень долго... подскажте можно ли 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')

2 ответов

16 просмотров

Быстро не будет в любом случае. Желаемое можно получить так: 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];

Ramil'- Автор вопроса

Спасибо.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта