2010-02-19 23 views
2

Je travaille sur la récupération des données en format XML à partir de SQL Server 05 en utilisant FOR XMLSélection Nested Xml éléments à l'aide de FOR XML - les meilleures pratiques

Quelle est la meilleure pratique pour les éléments de nidification dans mon Xml résultant?

Actuellement, je fais ceci:

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') 

Cependant, je suis préoccupé par la performance de ce en raison de la requête sous corrélative. Existe-t-il des fonctionnalités de type Grouper par je peux utiliser pour que je puisse faire une jointure interne régulière sur les deux tables et Xml résultant où les nœuds de niveau supérieur sont uniques et possèdent la collection appropriée de nœuds enfants?

Modifier Il semble que je puisse demander l'impossible étant donné l'absence de réponses. Alors peut-être une meilleure question est:

Existe-t-il un bon/meilleur moyen de générer Xml à partir de SQL Server ou devrais-je simplement transférer mon code dans le CLR et générer à partir de là?

Répondre

0

Les sous-requêtes corrélées devraient être évitées si possible (pas grave si les tables sont garanties pour être petites).

Peut-être que vous devriez d'abord définir le schéma XML (probablement quelque chose le consomme et attend un certain format).

+0

Hey Mitch, Yeh J'ai un XSD bien défini sur lequel je valide avant d'utiliser le XML. Le problème que j'ai consiste à obtenir une structure XML imbriquée sans utiliser de sous-requête corrélée. Ai-je manqué quelque chose concernant l'utilisation de schémas XML pour générer mon XML à partir de SQL? –