使用FOR XML选择嵌套的Xml元素 - 最佳实践

时间:2010-02-19 07:21:42

标签: xml sql-server-2005 for-xml

我正在使用FOR XML

从SQL Server 05检索Xml格式的数据

在生成的Xml中嵌套元素的最佳做法是什么?

目前我这样做:

Select 
    (
        Select 
            [Col1] As [Col1],
            [Col2] As [Col2]
        From [dbo].[NestedTable] As T1
        Where T0.[Key] = T1.[Key]
        FOR XML PATH('NestedTable'), TYPE   
    ),
    [Col1] As [Col1],
    [Col2] As [Col2],
From [dbo].[TopLevelTable] As T0
FOR XML PATH('TopLevelTable'), ROOT('TopLevelTableItems')   

但是,由于相关的子查询,我担心这种性能。是否有可以使用的Group By类型功能,以便我可以在两个表上进行常规内部连接,并生成Xml,其中顶级节点是唯一的并且具有适当的子节点集合?

修改 由于缺乏回应,似乎我可能会要求不可能的事情。所以也许更好的问题是:

是否有一种好的/更好的方法可以从SQL Server生成Xml,或者我应该将代码转移到CLR并从那里生成?

1 个答案:

答案 0 :(得分:0)

如果可能的话,应该避免相关的子查询(如果保证表格很小,则不是很重要)。

也许您应该首先定义XML模式(可能是某些东西正在消耗它并期望某种格式)。