2010-02-19 86 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