Sepertinya saya telah menjawab pertanyaan saya sendiri setelah sedikit melihat-lihat online:
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)
Menggunakan CROSS APPLY
Saya dapat memilih grandparent
tingkat atas node dan gunakan ini untuk memilih anak parent
node dan sebagainya. Dengan menggunakan metode ini, saya membuat kueri saya tidak dieksekusi dalam waktu sekitar 1 menit 30 detik turun menjadi sekitar 6 detik .
Menariknya, jika saya menggunakan OPEN XML
"lama" metode untuk mengambil data yang sama, kueri dijalankan dalam 1 detik !
Sepertinya Anda mungkin harus mendekati penggunaan kedua teknik ini berdasarkan kasus per kasus, tergantung pada ukuran/kompleksitas dokumen yang diharapkan.