在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 –
谢谢您的建议。我迅速提高了表现。 –