मेरे पास एकाधिक सीटीई के साथ काफी जटिल क्वेरी है लेकिन 1 मुख्य सीटीई जो अन्य सभी खींचती है, क्या इसका कारण मुख्य सीटीई को कई बार निष्पादित किया जाता है?एक ही क्वेरी में सीटीई को कई बार कॉल करना
5
A
उत्तर
2
पर एक नजर है।
उदाहरण: यदि आप इस क्वेरी
SELECT h.ProductID,h.StandardCost,
x.AvgPrice
FROM Production.ProductCostHistory h
CROSS JOIN (
SELECT AVG(p.ListPrice) AvgPrice
FROM Production.Product p
) x
AdventureWorks2008R2
डेटाबेस का उपयोग कर निष्पादित तो वास्तविक कार्य योजना लागू हो जाएगा
1
एक आप निष्पादन योजना है कि Vals CTE खंड दो बार निष्पादित किया जाता है से देखेंगे इस SQL Fiddle DEMO
पर नीचे
DECLARE @Table TABLE(
ID INT,
Val VARCHAR(50),
TypeID INT
)
DECLARE @TableTypes TABLE(
TypeID INT,
TypeName VARCHAR(50)
)
;WITh Vals AS (
SELECT *
FROm @Table
WHERE ID > 10
)
, UsingVals1 AS (
SELECT v.*,
tt.TypeName
FROm Vals v INNER JOIN
@TableTypes tt ON v.TypeID = tt.TypeID
)
, UsingVals2 AS (
SELECT v.*,
tt.TypeName
FROm Vals v INNER JOIN
@TableTypes tt ON v.TypeID = tt.TypeID
WHERE tt.TypeName LIKE '%%'
)
SELECT *
FROM UsingVals1
UNION
SELECT *
FROM UsingVals2
और फिर पर नज़र डालें। cteFiveYear
के लिए
SELECT
AVG(CASE WHEN instructorID = @instructorID THEN score END) InstructorSemesterAverage,
STDEVP(CASE WHEN instructorID = @instructorID THEN score END) InstructorSemesterSTDeviation,
AVG(CASE WHEN subjectCode = @subjectCode THEN score END) DepartmentSemesterAverage,
STDEVP(CASE WHEN subjectCode = @subjectCode THEN score END) DepartmentSemesterSTDeviation,
AVG(CASE WHEN [email protected] AND Q.year = @year AND semester = @semester THEN score END) ClassScore,
STDEVP(CASE WHEN [email protected] AND Q.year = @year AND semester = @semester THEN score END) ClassSTDeviation,
(SELECT DecTile FROM cteNtile WHERE instructorID = @instructorID)*10 DecTile,
X.DepartmentClassFiveYearAverage AS DepartmentClassFiveYearAverage,
X.DepartmentClassFiveYearSTDeviation AS DepartmentClassFiveYearSTDeviation,
X.InstructorClassFiveYearAverage AS InstructorClassFiveYearAverage,
X.InstructorClassFiveYearSTDeviation AS InstructorClassFiveYearSTDeviation
FROM
cteMain Q CROSS JOIN cteFiveYear X
यह कई फांसी पाएगा (वास्तविक कार्य योजना लागू करने के लिए Number of Executions
संपत्ति देखें):
हो सकता है कि यह भी आप क्रॉस इस प्रकार शामिल हों इस्तेमाल कर सकते हैं How many times the T-SQL inside the CTE is executed?
संबंधित मुद्दे
- 1. कई बार एक सीटीई का उपयोग करें
- 2. हाइबरनेट क्वेरी एक ही रिकॉर्ड को कई बार देता है
- 3. एक ही टेबल को कई बार
- 4. एक ही पृष्ठ को कई बार उपयोग करना
- 5. गेटटर को कई बार कॉल करना या एक बार कॉल करना और एक चर को असाइन करना?
- 6. कई बार एक परीक्षण को कॉल करना - Google टेस्ट
- 7. एक ही मूल्य कई बार सम्मिलित करना जब एक स्ट्रिंग
- 8. क्या एक ही क्वेरी को दो बार चयन क्वेरी में उपयोग करना संभव है?
- 9. एकल क्वेरी में एकाधिक सीटीई
- 10. एक से कई प्रोजेक्ट LINQ क्वेरी बार-बार
- 11. एक बार में कई IMAP संदेशों को प्राप्त करना
- 12. सीटीई
- 13. एक ही पंक्ति का चयन कई बार
- 14. Querydsl एक ही टेबल पर कई बार
- 15. एक एमएसएसएलएल सीटीई क्वेरी को MySQL में कैसे परिवर्तित करें?
- 16. एक ही हेडर को एक फ़ाइल में कई बार शामिल करना उपयोगी होता है?
- 17. कई रेगेक्स को एक ही
- 18. एक IEnumerable कई बार
- 19. एक ही सूची में एक ही आइटम को कई बार जोड़ें
- 20. एक ही चरित्र को कई बार कैसे बदलें?
- 21. "एनएसएसटींग स्ट्रिंगविथफॉर्मैट:" - एक ही पैरामीटर को कई बार एक्सेस करें?
- 22. इकाई फ्रेमवर्क क्वेरी एक ही पंक्ति को कई बार लौटाती है
- 23. एक ही बाल्टी में कई फ़ाइलों को स्थानांतरित करना
- 24. एक ही बार में
- 25. मैं एक ही आईपथन नोटबुक में कई बार एक ही matplotlib आंकड़ा कैसे दिखा सकता हूं?
- 26. एक PHP फ़ंक्शन को कई बार कॉल करें MySQL त्रुटि
- 27. की रोकथाम में एक ही ईवेंट हैंडलर काम कई बार
- 28. गोलांग एक ही पाठक से कई बार पढ़ता है
- 29. एक ही नियंत्रक में अन्य फ़ंक्शन को कॉल करना?
- 30. ही सूचक पर 'नई' कई बार उपयोग करना
धन्यवाद मैं थोड़ा के लिए googled लेकिन कुछ भी निर्णायक नहीं मिल सकता है, मैं मुझे लगता है कि इसके लिए temp टेबल का उपयोग करना होगा क्योंकि यह गुड़ के रूप में धीमा है। – Preston
@ प्रेस्टन, आप temp तालिकाओं का उपयोग शुरू करने से पहले, मैं आपकी क्वेरी के लिए निष्पादन योजना को देखने और यह निर्धारित करने की सलाह दूंगा कि कोई अनुक्रमणिका रणनीति क्वेरी प्रदर्शन में सुधार करेगी – zedfoxus
@zfus दुर्भाग्य से यह मेरा डेटाबेस नहीं है, यह वास्तव में मेरे विश्वविद्यालय में मुख्य परीक्षण डेटाबेस है और जब वे मेरी क्वेरी को संग्रहीत प्रो में डालते हैं तो वे मेरे लिए अन्य बदलाव नहीं करेंगे। – Preston