Jeg ser ud til at have besvaret mit eget spørgsmål efter at have kigget lidt mere rundt på nettet:
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)
Brug af CROSS APPLY
Jeg kan vælge grandparent
på øverste niveau node og brug denne til at vælge den underordnede parent
noder og så videre. Ved at bruge denne metode har jeg fjernet min forespørgsel fra at blive udført på omkring 1 minut og 30 sekunder ned til omkring 6 sekunder .
Interessant nok, hvis jeg bruger den "gamle" OPEN XML
metode til at hente de samme data, udføres forespørgslen på 1 sekund !
Det ser ud til, at du måske skal nærme dig brugen af disse to teknikker fra sag til sag afhængigt af den forventede størrelse/kompleksitet af det dokument, der sendes ind.