SQL सर्वर में, आप SET STATISTICS PROFILE
. का उपयोग कर सकते हैं टी-एसक्यूएल स्टेटमेंट के लिए प्रोफाइल जानकारी प्रदर्शित करने के लिए स्टेटमेंट।
STATISTICS PROFILE
तदर्थ प्रश्नों, विचारों और संग्रहीत प्रक्रियाओं के लिए काम करता है।
जब STATISTICS PROFILE
ON
पर सेट है , प्रत्येक निष्पादित क्वेरी अपना नियमित परिणाम सेट लौटाती है, उसके बाद एक अतिरिक्त परिणाम सेट होता है जो क्वेरी निष्पादन की एक प्रोफ़ाइल दिखाता है।
उदाहरण
प्रदर्शित करने के लिए यहां एक सरल उदाहरण दिया गया है।
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
परिणाम:
यह वही कॉलम लौटाता है जो SHOWPLAN_ALL
रिटर्न प्लस दो अतिरिक्त (पंक्तियां और निष्पादित कॉलम)।
वह स्क्रीनशॉट तब लिया गया था जब मैंने Azure डेटा स्टूडियो में उस कथन को चलाया था।
यहाँ एक और सरल उदाहरण है, इस बार मैं mssql-cli (कमांड लाइन इंटरफ़ेस) में एक स्टेटमेंट चलाता हूँ।
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats;
GO
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
Commands completed successfully. +---------+-----------+ | CatId | CatName | |---------+-----------| | 1 | Meow | | 2 | Fluffy | | 3 | Scratch | +---------+-----------+ (3 rows affected) -[ RECORD 1 ]------------------------- Rows | 3 Executes | 1 StmtText | SELECT * FROM Cats StmtId | 1 NodeId | 1 Parent | 0 PhysicalOp | NULL LogicalOp | NULL Argument | NULL 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 ]------------------------- Rows | 3 Executes | 1 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.
इसे कैसे बंद करें
STATISTICS PROFILE
को चालू करने के लिए बंद करें, बस OFF
. का उपयोग करके इसे फिर से चलाएं ON
. के बजाय :
SET STATISTICS PROFILE OFF;
GO
क्या STATISTICS PROFILE
है बहिष्कृत?
हालांकि वर्तमान दस्तावेज़ में इसका कोई उल्लेख नहीं है, SET STATISTICS PROFILE
ऐसा प्रतीत होता है कि भविष्य के शोप्लान संस्करणों में बहिष्करण के लिए शेड्यूल किया गया है।
इस पुराने MSDN लेख के अनुसार, SET STATISTICS PROFILE
भविष्य के शोप्लान संस्करणों में बहिष्करण के लिए शेड्यूल किया गया है, और यह अनुशंसा की जाती है कि आप SET STATISTICS XML
का उपयोग करें। इसके बजाय।
साथ ही, SET STATISTICS XML
के लिए वर्तमान दस्तावेज़ीकरण इसका समर्थन करता है:
SET Statistics PROFILE और SET Statistics XML एक दूसरे के समकक्ष हैं। पूर्व पाठ्य उत्पादन का उत्पादन करता है; बाद वाला एक्सएमएल आउटपुट पैदा करता है। SQL सर्वर के भविष्य के संस्करणों में, नई क्वेरी निष्पादन योजना की जानकारी केवल SET STATISTICS XML स्टेटमेंट के माध्यम से प्रदर्शित की जाएगी, न कि SET STATISTICS PROFILE स्टेटमेंट के माध्यम से।
इसलिए, यह संभवतः SET STATISTICS XML
. का उपयोग करने के लिए भुगतान करता है SET STATISTICS PROFILE
. के बजाय जहां संभव हो।