SQL Server: OPENXML vs SELECT..à PARTIR de quand vous traitez avec XML?
J'ai ce xml :
DECLARE @x XML
SET @x =
'<data>
<add>a</add>
<add>b</add>
<add>c</add>
</data>';
Tâche :
Je veux la liste de la a,b,c
.
approche 1 :
SELECT s.value('.', 'VARCHAR(8000)') AS [ADD]
FROM @x.nodes('/data/add') AS t(s)
approche 2:
DECLARE @idoc INT
EXEC sp_xml_preparedocument @idoc OUTPUT, @x
SELECT *
FROM OPENXML(@idoc, '/data/add', 2)
WITH ([add] NVARCHAR(MAX) '.')
deux d'entre eux de me donner :
question :
qui est le moyen préféré ?
Est-il un des avantages de ce dernier vs ancien ( ou vice-versa) ?
Personnellement, je préfère l'approche #1 - c'est beaucoup plus intuitif pour moi, et il ne nécessite pas d'étapes supplémentaires de
Et avec ce que ... c'est #1 peut être utilisé dans les Vues et les.
sp_xml_preparedocument
etc. - tout simplement plus facile à utiliserEt avec ce que ... c'est #1 peut être utilisé dans les Vues et les.
OriginalL'auteur Royi Namir | 2012-03-08
Vous devez vous connecter pour publier un commentaire.
Un simple test qui montre que votre approche 1 prend moins de temps que approche 2. Je ne voudrais pas tirer des conclusions quant à elle être toujours le cas. Il peut dépendre de la façon dont votre fichier XML est structuré et comment vous devez interroger le document XML.
Procédures stockées pour tester sur:
Test:
Résultat s'approche de 1:
Résultat de l'approche 2:
(Testé sur SQL Server 2005.)
le coût de requête n'est pas le même que le temps d'exécution et quand il s'agit de requêtes XML de requête coût est de ne pas être digne de confiance.
( juste une idée ) - comment voulez-vous résoudre ce problème ? stackoverflow.com/questions/10818115/... ( ne prennent pas la peine de répondre, il suffit de répondre par des mots...) je vous remercie pour votre temps.
A fait quelques tests et à l'aide de
unpivot
dirait qu'il serait plus efficace que les autres réponses. J'ai seulement regardé le plan d'Exécution. Pas testé avec un grand nombre de données.Je vous remercie. Je suis content de vous aider.
OriginalL'auteur Mikael Eriksson
Je préfère le n ° 2. essayez le plan d'exécution et de voir que la première approche des coûts de 97% alors que le cond coûte seulement 3%
À mon avis, la Requête des estimations de coût est de ne pas être digne de confiance quand il s'agit de l'aide du type de données XML.
J'ai couru tboth les requêtes en un seul lot. 97% pour le premier et 3% pour la seconde
OriginalL'auteur PraveenVenu
OriginalL'auteur RandyMohan