В SQL Server 2012 у меня есть таблица с 1 строкой, которая содержит столбец XML - XMLdata
. Размер XML составляет около 10 МБ. Я написал запрос, но выполнение занимает около 1 часа. Существуют ли какие-либо варианты перезаписи запроса, чтобы он работал быстрее?SQL Server: оптимизировать TSQL-запрос с помощью XQuery
Структура XML:
<Settings>
<Group Name="A">
<Group Name="AA">
<Group Name="AAA">
<Parameter Name="aaa">
<Value>test1</Value>
<Items>
<Item Index="0" Name="A"/>
<Item Index="1" Name="B"/>
</Items>
</Parameter>
</Group>
</Group>
</Group>
</Settings>
Запрос:
SELECT
A.B.value('../../../../../@Name', 'nvarchar(100)') + '/' + A.B.value('../../../../@Name', 'nvarchar(100)') + '/' + A.B.value('../../../@Name', 'nvarchar(100)') AS BlockPath
, A.B.value('../../@Name', 'nvarchar(100)') AS ParameterName
, A.B.value('./@Index', 'nvarchar(100)') AS ItemIndex
, A.B.value('./@Name', 'nvarchar(100)') AS ItemName
FROM
[table]
CROSS APPLY
XMLdata.nodes('//Item') AS A(B);
Пробовал ли вы искать индексы xml? https://msdn.microsoft.com/en-us/library/bb934097.aspx –
Благодарим за предложение. Я быстро увеличил производительность. –