从MS SQL Server中的XML类型字段快速检索数据

时间:2014-01-28 07:11:44

标签: sql-server xml xquery-sql

我在MS SQL Server 2008中有一个 tbl_Data 表,它有两个字段, ID 是主键, CustomFields 列可以有XML数据。

 [ID] [uniqueidentifier] [CustomFields] [xml] NULL 

XML中的平均节点 - 每个记录中有25个节点(某些记录为空,有些记录最多有70个节点) tbl_Data中的总记录数:80000行。

以下是CustomFields Column的示例数据。

<Fields>
<Field Id="StatusName" Value="Approve" />
<Field Id="LogNumber" Value="70470" />
<Field Id="SubmittedDate" Value="Feb  7 2012 12:00AM" />
..
<Fields>

我正在尝试执行以下查询以检索具有LogNumber 70470的记录,此查询需要1分钟才能生成结果。

 SELECT ID FROM [tbl_Data] WHERE
CustomFields.exist('/Fields/Field[@Title = "LogNumber"]') = 1
     AND CustomFields.exist('/Fields/Field[@Value="70470"]') = 1 

我曾尝试应用XML索引,但似乎没有帮助。

您非常欢迎您提出宝贵的建议或建议,以提高数据检索性能,即我是否需要更改XML结构?

由于 苏雷什

1 个答案:

答案 0 :(得分:1)

正如此响应here (link)所解释的那样,通过在XML列中同时使用模式和索引,可以显着提高XML查询的性能。基本上,创建适用于您的数据的模式集合,将列更改为该数据类型,添加XML索引和利润。

在我的情况下,默认情况下,将一个巨大的XML文件粉碎成各种形式的数据需要几天时间。索引将其减少到大约10个小时,而使用模式将其减少到20秒,这已经足够好了。

相关问题