在SQL Server 2012中,我有一個包含1列的表,其中包含一個XML列 - XMLdata
。 XML的大小約爲10 MB。我寫了一個查詢,但執行需要大約1個小時。有沒有什麼選擇如何重寫查詢,它會更快地工作?SQL Server:使用XQuery優化TSQL查詢
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/zh-cn/library/bb934097.aspx –
謝謝您的建議。我迅速提高了表現。 –