ऐसा लगता है कि ऑनलाइन देखने के बाद मैंने अपने प्रश्न का उत्तर दे दिया है:
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
का उपयोग करना मैं शीर्ष-स्तरीय grandparent
का चयन कर सकता हूं नोड और बच्चे का चयन करने के लिए इसका उपयोग करें parent
नोड्स और इतने पर। इस पद्धति का उपयोग करके मैंने अपनी क्वेरी को लगभग 1 मिनट 30 सेकंड . में निष्पादित करने से लिया है लगभग 6 सेकंड . तक नीचे ।
दिलचस्प बात यह है कि अगर मैं "पुराना" OPEN XML
का उपयोग करता हूं उसी डेटा को पुनः प्राप्त करने की विधि, क्वेरी 1 सेकंड में निष्पादित होती है !
ऐसा लगता है कि आपको पारित होने वाले दस्तावेज़ के अपेक्षित आकार/जटिलता के आधार पर केस-दर-मामला आधार पर इन दो तकनीकों के उपयोग के लिए संपर्क करना पड़ सकता है।