SQL सर्वर में, आप SET SHOWPLAN_ALL
. का उपयोग कर सकते हैं टी-एसक्यूएल स्टेटमेंट को कैसे निष्पादित किया जाता है, साथ ही साथ स्टेटमेंट के लिए संसाधन आवश्यकताओं के अनुमान के बारे में विस्तृत जानकारी देने के लिए स्टेटमेंट।
SHOWPLAN_ALL
पंक्तियों के एक सेट के रूप में जानकारी देता है जो एक पदानुक्रमित पेड़ बनाता है जो SQL सर्वर क्वेरी प्रोसेसर द्वारा उठाए गए चरणों का प्रतिनिधित्व करता है क्योंकि यह प्रत्येक कथन को निष्पादित करता है। यह SHOWPLAN_TEXT
. के समान है , सिवाय इसके कि SHOWPLAN_ALL
अधिक विस्तृत जानकारी देता है (और इसका उपयोग उन अनुप्रयोगों के साथ किया जाना है जो इसके आउटपुट को संभाल सकते हैं)।
आप SHOWPLAN_ALL
सेट कर सकते हैं या तो ON
या OFF
.
जब SHOWPLAN_ALL
ON
है , बाद के सभी टी-एसक्यूएल स्टेटमेंट निष्पादित नहीं होते हैं। इसके बजाय SQL सर्वर कथन के लिए निष्पादन जानकारी (इसे निष्पादित किए बिना) देता है।
यह नोट करना महत्वपूर्ण है कि SHOWPLAN_ALL
अनुमान प्रदान करता है संसाधन आवश्यकताओं की, और वास्तविक संसाधन आवश्यकताएं भिन्न हो सकती हैं जब कथन वास्तव में निष्पादित होता है।
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SET SHOWPLAN_ALL ON;
GO
SELECT * FROM Cats;
GO
ध्यान दें कि SET SHOWPLAN_ALL
संग्रहीत प्रक्रिया के अंदर निर्दिष्ट नहीं किया जा सकता है, और यह बैच में एकमात्र कथन होना चाहिए।
यहां बताया गया है कि Azure डेटा स्टूडियो में परिणाम कैसा दिखता है:
और यहाँ यह वर्टिकल आउटपुट का उपयोग करते समय mssql-cli (कमांड लाइन इंटरफ़ेस) में कैसा दिखता है:
Commands completed successfully. -[ RECORD 1 ]------------------------- StmtText | SELECT * FROM Cats; StmtId | 1 NodeId | 1 Parent | 0 PhysicalOp | NULL LogicalOp | NULL Argument | 1 DefinedValues | NULL EstimateRows | 3 EstimateIO | NULL EstimateCPU | NULL AvgRowSize | NULL TotalSubtreeCost | 0.0032853 OutputList | NULL Warnings | NULL Type | SELECT Parallel | 0 EstimateExecutions | NULL -[ RECORD 2 ]------------------------- StmtText | |--Clustered Index Scan(OBJECT:([Test].[dbo].[Cats].[PK__Cats__6A1C8AFAB3EF1A8F])) StmtId | 1 NodeId | 2 Parent | 1 PhysicalOp | Clustered Index Scan LogicalOp | Clustered Index Scan Argument | OBJECT:([Test].[dbo].[Cats].[PK__Cats__6A1C8AFAB3EF1A8F]) DefinedValues | [Test].[dbo].[Cats].[CatId], [Test].[dbo].[Cats].[CatName] EstimateRows | 3 EstimateIO | 0.003125 EstimateCPU | 0.0001603 AvgRowSize | 142 TotalSubtreeCost | 0.0032853 OutputList | [Test].[dbo].[Cats].[CatId], [Test].[dbo].[Cats].[CatName] Warnings | NULL Type | PLAN_ROW Parallel | 0 EstimateExecutions | 1 (2 rows affected) Commands completed successfully.
बहुत सारे कॉलम हैं, इसलिए मैंने यहां वर्टिकल आउटपुट का इस्तेमाल किया ताकि इसे पढ़ना आसान हो जाए।
यदि मेरी क्वेरी अधिक जटिल होती, तो और पंक्तियाँ लौटा दी जातीं।
यहां एक (थोड़ा) अधिक जटिल क्वेरी का उदाहरण दिया गया है।
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
परिणाम:
इसे कैसे बंद करें
आप SET SHOWPLAN_ALL OFF
सेट करके इसे बंद कर सकते हैं ।
एक बार ऐसा करने के बाद, बाद के कथन सामान्य रूप से निष्पादित होंगे।
SET SHOWPLAN_ALL OFF;
GO
SELECT * FROM Cats;
GO
परिणाम:
Commands completed successfully. +---------+-----------+ | CatId | CatName | |---------+-----------| | 1 | Meow | | 2 | Fluffy | | 3 | Scratch | +---------+-----------+ (3 rows affected) Commands completed successfully.
बहिष्कृत या नहीं?
इस पुराने MSDN लेख के अनुसार, SET SHOWPLAN_ALL
भविष्य के शोप्लान संस्करणों में बहिष्करण के लिए शेड्यूल किया गया है, और यह अनुशंसा की जाती है कि आप SET SHOWPLAN_XML
का उपयोग करें इसके बजाय।
हालाँकि, वह MSDN लेख SQL Server 2008 R2 के लिए है, और जैसा कि मैंने इसे लिखा है, ऐसा लगता है कि SQL Server 2019 में पदावनत नहीं किया गया है। वास्तव में, वर्तमान दस्तावेज़ीकरण में बहिष्करण का कोई उल्लेख नहीं है, और यह शामिल नहीं है। जब मैं SQL सर्वर में बहिष्कृत वस्तुओं की सूची चलाता हूं।
किसी भी तरह से, भविष्य में रिलीज़ में इसका उपयोग करने से पहले शायद इसे ध्यान में रखना होगा।
ग्राफ़िकल एक्ज़ीक्यूशन प्लान
यदि आप SSMS या Azure डेटा स्टूडियो जैसे ग्राफ़िकल टूल का उपयोग कर रहे हैं, तो आपके पास वर्तमान क्वेरी के लिए अनुमानित ग्राफ़िकल क्वेरी निष्पादन योजना देखने का विकल्प हो सकता है।
- SSMS में आप Ctrl + L . का उपयोग कर सकते हैं यह करने के लिए। या आप अनुमानित निष्पादन योजना प्रदर्शित करें . क्लिक कर सकते हैं आइकन, या क्वेरी विंडो में राइट-क्लिक करें और अनुमानित निष्पादन योजना प्रदर्शित करें चुनें ।
- Azure Data Studio में, आप व्याख्या करें . पर क्लिक कर सकते हैं क्वेरी विंडो के ऊपर बटन।
आप SET SHOWPLAN_XML ON
. का भी उपयोग कर सकते हैं इसे सक्षम करने के लिए, और SET SHOWPLAN_XML OFF
इसे निष्क्रिय करने के लिए।