SQL सर्वर में, आप SET SHOWPLAN_TEXT
. का उपयोग कर सकते हैं टी-एसक्यूएल स्टेटमेंट को कैसे निष्पादित किया जाता है, इसके बारे में विस्तृत जानकारी देने के लिए स्टेटमेंट।
SHOWPLAN_TEXT
पंक्तियों के एक सेट के रूप में जानकारी देता है जो एक पदानुक्रमित पेड़ बनाता है जो SQL सर्वर क्वेरी प्रोसेसर द्वारा उठाए गए चरणों का प्रतिनिधित्व करता है क्योंकि यह प्रत्येक कथन को निष्पादित करता है।
यह SHOWPLAN_ALL
के समान है , सिवाय इसके कि यह कम विवरण देता है। इसलिए यह उन अनुप्रयोगों के लिए लक्षित है जो SHOWPLAN_ALL
के अतिरिक्त विवरणों को संभाल नहीं सकते हैं प्रदान करता है।
आप SHOWPLAN_TEXT
. सेट कर सकते हैं या तो ON
. पर या OFF
.
जब SHOWPLAN_TEXT
ON
है , बाद के सभी टी-एसक्यूएल स्टेटमेंट निष्पादित नहीं होते हैं। इसके बजाय SQL सर्वर कथन के लिए निष्पादन जानकारी (इसे निष्पादित किए बिना) देता है।
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SET SHOWPLAN_TEXT ON;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
ध्यान दें कि SET SHOWPLAN_TEXT
संग्रहीत प्रक्रिया के अंदर निर्दिष्ट नहीं किया जा सकता है, और यह बैच में एकमात्र कथन होना चाहिए।
यहां बताया गया है कि Azure डेटा स्टूडियो में परिणाम कैसा दिखता है:
और यहाँ यह mssql-cli (कमांड लाइन इंटरफ़ेस) में कैसा दिखता है:
Commands completed successfully. +------------+ | StmtText | |------------| | SELECT * FROM Cats c INNER JOIN Dogs d ON c.CatName = d.DogName; | +------------+ (1 row affected) +--------------------------------------------------------------------------------------------------------------------------------------+ | StmtText | |--------------------------------------------------------------------------------------------------------------------------------------| | |--Hash Match(Inner Join, HASH:([d].[DogName])=([Expr1003]), RESIDUAL:([Expr1003]=[Test].[dbo].[Dogs].[DogName] as [d].[DogName])) | | |--Table Scan(OBJECT:([Test].[dbo].[Dogs] AS [d])) | | |--Compute Scalar(DEFINE:([Expr1003]=CONVERT_IMPLICIT(nvarchar(255),[Test].[dbo].[Cats].[CatName] as [c].[CatName],0))) | | |--Clustered Index Scan(OBJECT:([Test].[dbo].[Cats].[PK__Cats__6A1C8AFAB3EF1A8F] AS [c])) | +--------------------------------------------------------------------------------------------------------------------------------------+ (4 rows affected) Commands completed successfully.
इसे कैसे बंद करें
आप SET SHOWPLAN_TEXT OFF
. का उपयोग करके इसे बंद कर सकते हैं ।
एक बार ऐसा करने के बाद, बाद के कथन सामान्य रूप से निष्पादित होंगे।
SET SHOWPLAN_TEXT 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.
बहिष्कृत या नहीं?
इस पुराने MSDN लेख के अनुसार, SET SHOWPLAN_TEXT
भविष्य के शोप्लान संस्करणों में बहिष्करण के लिए शेड्यूल किया गया है, और यह अनुशंसा की जाती है कि आप 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
इसे निष्क्रिय करने के लिए।