SQL सर्वर में, आप SET SHOWPLAN_XML
. का उपयोग कर सकते हैं एक अच्छी तरह से परिभाषित एक्सएमएल दस्तावेज़ के रूप में टी-एसक्यूएल स्टेटमेंट को कैसे निष्पादित किया जाएगा, इस बारे में विस्तृत जानकारी देने के लिए स्टेटमेंट।
यह SHOWPLAN_ALL
के समान है , सिवाय इसके कि SHOWPLAN_ALL
पंक्तियों का अपना डेटा सेट लौटाता है जो एक पदानुक्रमित पेड़ बनाता है।
आप SHOWPLAN_XML
सेट कर सकते हैं या तो ON
. पर या OFF
.
जब SHOWPLAN_XML
ON
है , बाद के सभी टी-एसक्यूएल स्टेटमेंट निष्पादित नहीं होते हैं। इसके बजाय SQL सर्वर कथन के लिए निष्पादन जानकारी (इसे निष्पादित किए बिना) देता है।
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SET SHOWPLAN_XML ON;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
ध्यान दें कि SET SHOWPLAN_XML
संग्रहीत प्रक्रिया के अंदर निर्दिष्ट नहीं किया जा सकता है, और यह बैच में एकमात्र कथन होना चाहिए।
आपको मिलने वाला परिणाम इस बात पर निर्भर हो सकता है कि आप SQL सर्वर तक पहुँचने के लिए किस टूल का उपयोग कर रहे हैं।
जब मैं इसे Azure डेटा स्टूडियो में चलाता हूं, तो मैं परिणाम का एक अलग दृश्य प्राप्त करने के लिए विभिन्न टैब पर क्लिक कर सकता हूं।
परिणाम टैब कच्ची एक्सएमएल स्ट्रिंग प्रदर्शित करता है:
पंक्ति पर क्लिक करने से XML दस्तावेज़ एक नए टैब में खुल जाता है:
क्वेरी योजना टैब परिणाम का चित्रमय प्रतिनिधित्व प्रदर्शित करता है:
शीर्ष संचालन टैब डेटा को सारणीबद्ध प्रारूप में प्रस्तुत करता है जो आपको विभिन्न मेट्रिक्स द्वारा डेटा को सॉर्ट करने में सक्षम बनाता है:
काम नहीं कर रहा?
यदि यह आपके लिए काम नहीं करता है, तो सुनिश्चित करें कि वास्तविक निष्पादन योजना शामिल करें SSMS में चयनित नहीं है। जब इसे चुना जाता है, SET SHOWPLAN_XML ON
XML शोप्लान आउटपुट उत्पन्न नहीं करता है।
इसे कैसे बंद करें
आप SET SHOWPLAN_XML OFF
. का उपयोग करके इसे बंद कर सकते हैं ।
एक बार ऐसा करने के बाद, बाद के कथन सामान्य रूप से निष्पादित होंगे।
SET SHOWPLAN_XML OFF;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
परिणाम:
Commands completed successfully. +---------+-----------+---------+-----------+-----------+ | CatId | CatName | DogId | DogName | GoodDog | |---------+-----------+---------+-----------+-----------| | 2 | Fluffy | 2 | Fluffy | 0 | +---------+-----------+---------+-----------+-----------+ (1 row affected) Commands completed successfully.
जीयूआई में निष्पादन योजना
यदि आप SSMS या Azure डेटा स्टूडियो जैसे ग्राफ़िकल टूल का उपयोग कर रहे हैं, तो आपके पास अनुमानित ग्राफ़िकल क्वेरी निष्पादन योजना देखने के लिए एक शॉर्टकट विकल्प हो सकता है। यह आपको SET SHOWPLAN_XML ON
चलाने की आवश्यकता के बिना क्वेरी योजना देखने की अनुमति देता है ।
अनुमानित क्वेरी योजना चलाने के लिए:
- SSMS में आप Ctrl + L . का उपयोग कर सकते हैं यह करने के लिए। या आप अनुमानित निष्पादन योजना प्रदर्शित करें . पर क्लिक कर सकते हैं आइकन, या क्वेरी विंडो में राइट-क्लिक करें और अनुमानित निष्पादन योजना प्रदर्शित करें चुनें . यह आपको
SHOWPLAN_XML
. चालू करने से बचाएगा आपके कोड में चालू और बंद। - Azure Data Studio में, आप व्याख्या करें . पर क्लिक कर सकते हैं क्वेरी विंडो के ऊपर बटन।
आप एक वास्तविक क्वेरी योजना भी चला सकते हैं:
- SSMS में, क्वेरी . पर मेनू में, वास्तविक निष्पादन योजना शामिल करें click क्लिक करें या वास्तविक निष्पादन योजना शामिल करें . क्लिक करें टूलबार बटन।
- Azure Data Studio में, देखें> कमांड पैलेट पर जाएं और वास्तविक योजना के साथ वर्तमान क्वेरी चलाएँ type टाइप करें ।
ध्यान दें कि यदि वास्तविक निष्पादन योजना शामिल करें SSMS में चुना गया है, SET SHOWPLAN_XML ON
विकल्प एक्सएमएल शोप्लान आउटपुट का उत्पादन नहीं करता है। वास्तविक निष्पादन योजना शामिल करें . को साफ़ करने का प्रयास करें इस SET
. का उपयोग करने से पहले बटन विकल्प।
हालांकि, मुझे लगता है कि Azure Data Studio इसके विपरीत SET SHOWPLAN_XML ON
करता है ऐसा लगता है कि वास्तविक योजना के साथ वर्तमान क्वेरी चलाएं विकल्प, सिवाय अगर मैं समझाता हूं पहले (अनुमानित क्वेरी योजना), जिसके बाद वास्तविक योजना के साथ वर्तमान क्वेरी चलाएँ अचानक काम करता है (वास्तविक पंक्तियां और वास्तविक निष्पादन शीर्ष संचालन . के स्तंभ टैब उचित डेटा लौटाएं)।
क्वेरी योजना को पुनः प्राप्त करने के लिए अन्य विधियों का उपयोग करने से पहले XML शोप्लान विकल्प को बंद करना शायद सबसे अच्छा है।