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.