Ich scheine meine eigene Frage beantwortet zu haben, nachdem ich mich ein bisschen online umgesehen habe:
SELECT
grandparent.gname.value('@name', 'VARCHAR(15)'),
parent.pname.value('@name', 'VARCHAR(15)'),
child.cname.value('@name', 'VARCHAR(15)')
FROM
@xmlFamilyTree.nodes('/grandparent') AS grandparent(gname)
CROSS APPLY
grandparent.gname.nodes('*') AS parent(pname)
CROSS APPLY
parent.pname.nodes('children/*') AS child(cname)
Mit CROSS APPLY
Ich kann den grandparent
der obersten Ebene auswählen -Knoten und verwenden Sie diesen, um das untergeordnete parent
auszuwählen Knoten und so weiter. Mit dieser Methode habe ich meine Abfrage in etwa 1 Minute 30 Sekunden ausgeführt auf etwa 6 Sekunden reduziert .
Interessanterweise aber, wenn ich das "alte" OPEN XML
verwende Methode zum Abrufen derselben Daten, wird die Abfrage in 1 Sekunde ausgeführt !
Es scheint, als müssten Sie die Verwendung dieser beiden Techniken von Fall zu Fall in Abhängigkeit von der erwarteten Größe/Komplexität des einzureichenden Dokuments angehen.