मेरे पास एक विशेष SQL क्वेरी है जो एक रहस्यमय प्रदर्शन समस्या से पीड़ित है। क्वेरी है:कुल कार्यों का उपयोग कर SQL क्वेरी के प्रदर्शन में सुधार करने की आवश्यकता
SELECT COUNT(LengthOfTime) AS TotalTime,
SUM(LengthOfTime) AS TotalLength,
SUM(LengthOfTime)/COUNT(LengthOfTime) AS AverageTime,
SUM(Pops)/COUNT(LengthOfTime) AS AveragePop
FROM ((SELECT *
FROM (SELECT *, ID & YearRec AS ID2
FROM MyFirstTable
UNION ALL
SELECT *, ID & YearRec AS ID2
FROM Table2011) AS TEMP
WHERE STARTTIME >= '8/1/2011 00:00:00'
AND StartTime <= '8/5/2011 23:59:59') AS TEMP2
JOIN AppleTable ON TEMP2.Reason = AppleTable.Skills)
JOIN PeopleTable ON TEMP2.Operator = PeopleTable.Operators
WHERE AppleTable.[ON] = 1
AND PeopleTable.[ON] = 1
AND Rec_Type = 'SECRET AGENT'
यहां मुद्दा यह है कि इस क्वेरी (0:02 करने के लिए 0:00) बहुत जल्दी चलता है जब एक 5 दिन अवधि के लिए चलाते हैं, लेकिन बहुत धीरे धीरे (1:20 1:45 करने के लिए है) एक 6 दिन की अवधि के लिए।
टेबल्स (MyFirstTable और Table2011) में प्रति दिन लगभग 105,000 रिकॉर्ड हैं।
मेरा प्रश्न: वहाँ पंक्तियों की संख्या इससे पहले कि आप एसक्यूएल सर्वर में एक गंभीर प्रदर्शन समस्या का हल नहीं आप एक समग्र समारोह पारित कर सकते हैं करने के लिए एक ऊपरी सीमा है? (वर्तमान में 2008 आर 2 का उपयोग कर)
क्या आपके आंकड़े अद्यतित हैं, क्या आपने हाल ही में इंडेक्स का पुनर्निर्माण किया है? –
लगता है जैसे आप किसी मेमोरी ऑपरेशन से डिस्क की आवश्यकता वाले किसी व्यक्ति से बहते जा रहे हैं। मैं MySQL ट्यूनिंग विवरण से परिचित नहीं हूं, लेकिन अगर अस्थायी वर्कस्पेस के लिए मेमोरी आवंटन पैरामीटर है, तो आप इसे बढ़ाने का प्रयास कर सकते हैं। –
@Jim: यह mySQL नहीं है ... –