XML列查询建议

时间:2015-04-20 09:32:38

标签: sql sqlxml

我有一个包含20亿行的表,其中一列包含XML数据。实际上我正在编写一个SQL来从XML列中提取数据广告填充到另一个表中。它真的需要很多时间..每秒处理3k行。 我的XML查询有大约30列,主要是使用xpath语句提取数据,如下所示。我使用的是SQL Server 2012标准版,因此无法进行表格分区。

我的sql如下所示。你能否提出一些如何提高绩效的建议。

SELECT Id,
    a1 = CASE SortOrder
                        WHEN 0 THEN Contents.value('(/a/Code)[1]', 'varchar(255)')
                        ELSE NULL END,
    a2 = CASE SortOrder
                        WHEN 1 THEN Contents.value('(/a/Code)[1]', 'varchar(255)')
                        ELSE NULL END,
    a3 = Contents.value('(/b/c)[1]', 'varchar(255)'),     
    a4 = Contents.value('(/d/e/f[@category="aa"]/@categoryDate)[1]', 'datetimeOffset'),  
    a5 = Convert(varchar(max),STUFF((SELECT ',' + OTH.value('(.)', 'varchar(150)') 
    FROM Contents.nodes('/d/e/f[@category="g"]/SelectedCategories/SelectedCategory') AS Node(OTH) FOR XML PATH('')), 1, 1, '')) + ' & '
    + ISNULL(Contents.value('(/d/e/f[@category="g"]/Freeform)[1]', 'varchar(255)'), ' ' )
    FROM tbl

添加主XML索引可能有帮助吗?

0 个答案:

没有答案