Ik schijn mijn eigen vraag te hebben beantwoord na wat meer online rond te kijken:
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)
CROSS APPLY
gebruiken Ik kan de grandparent
op het hoogste niveau selecteren knooppunt en gebruik dit om de onderliggende parent
. te selecteren knooppunten enzovoort. Met behulp van deze methode heb ik de uitvoering van mijn query in ongeveer 1 minuut en 30 seconden tot ongeveer 6 seconden .
Interessant is echter dat als ik de "oude" OPEN XML
. gebruik methode om dezelfde gegevens op te halen, wordt de query uitgevoerd in 1 seconde !
Het lijkt erop dat u het gebruik van deze twee technieken van geval tot geval moet bekijken, afhankelijk van de verwachte omvang/complexiteit van het document dat wordt doorgegeven.