2010-02-19 80 views
2

我正在使用FOR XML从SQL Server 05检索Xml格式的数据使用FOR XML选择嵌套的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并从那里生成?

回答

0

如果可能的话,应避免相关的子查询(如果表格保证很小,则不应该有大的影响)。也许你应该先定义XML模式(大概是有些东西在消耗这个,并且期望某种格式)。

+0

嘿米奇,叶我有一个定义良好的XSD,我使用XML之前进行了验证。我得到的问题是获取嵌套的XML结构,而不使用相关的子查询。我是否错过了使用XML模式从SQL生成我的XML的问题? – 2010-02-19 08:26:50