sql server Xquery节点的值性能

时间:2014-12-08 07:35:00

标签: sql sql-server xml xquery

我有一张25,000行的表。表审计(Id int identity(1,1),AdditionalInfo xml) AdditionalInfo列中的行样本数据如下所示

<Audit version="1">
  <Context name="Event">
    <Action name="OrganizationEventReceived">
      <Input>
        <Source type="SourceOrganizationId">77d2678b-ea4a-43ad-816b-c63edf206b08</Source>
        <Target type="TargetOrganizationId">b98fd3ae-dbcb-4826-9d92-7e445ad61273,b98fd3ae-dbcb-4826-9d92-7e445ad61273,b98fd3ae-dbcb-4826-9d92-7e445ad61273</Target>
      </Input>
    </Action>
  </Context>
</Audit>

我喜欢粉碎xml并使用以下查询收集输出数据集中的数据。

SELECT   Id,
         p.value('(@name)[1]', 'nvarchar (100)') AS TargetAction, 
         p.value('(Input/Source/text())[1]', 'nvarchar (500)') AS Source, 
         p.value('(Input/Target/text())[1]', 'nvarchar (max)') AS Target
FROM dbo.Audit  CROSS APPLY AdditionalInfo.nodes('/Audit/Context/Action') AS AdditionalInfo(p)

查询的性能很差。只需15秒即可为25,000行提供结果集。有没有更好的方法来做到这一点。我甚至尝试在AdditionalInfo列上放置主要和辅助xml索引。请帮助并告诉我,使用更好的sql server xquery技术。

谢谢,

0 个答案:

没有答案