मैंने देखा है कि केवल प्रदर्शन प्रदर्शन-अप the one produced by @Scott (the other answer to this question का लेखक) है। दुर्भाग्यवश, उनका आलेख वेब SQL डेटाबेस न्याय नहीं करता है, क्योंकि यह परिणाम सेट के आकार को प्रतिबंधित करने के लिए एक अक्षम हैविंग क्लॉज का उपयोग करता है। मैं स्कॉट की एसक्यूएल फेरबदल, की जगह होने, ग्रुप द्वारा और वाम के साथ (लगभग) बराबर शामिल हों कहां और उप चयन:
SELECT p.Name AS ProgramName,
s.rowid,
s.Name,
s.NowShowing,
s.ProgramID,
(SELECT COUNT(*) FROM Episode WHERE SeriesID = s.rowid AND STATUS IN ('Watched', 'Recorded', 'Expected') OR STATUS IS NULL) AS EpisodeCount,
(SELECT COUNT(*) FROM Episode WHERE SeriesID = s.rowid AND STATUS = 'Watched') AS WatchedCount,
(SELECT COUNT(*) FROM Episode WHERE SeriesID = s.rowid AND STATUS = 'Recorded') AS RecordedCount,
(SELECT COUNT(*) FROM Episode WHERE SeriesID = s.rowid AND STATUS = 'Expected') AS ExpectedCount
FROM Program p
JOIN Series s ON p.rowid = s.ProgramID
WHERE s.NowShowing IS NOT NULL OR
EXISTS (SELECT * FROM Episode WHERE SeriesID = s.rowid AND STATUS IN ('Recorded', 'Expected'))
ORDER BY CASE
WHEN s.NowShowing IS NULL THEN 1
ELSE 0
END,
s.NowShowing,
p.Name
इस बारे में 28 बार मूल की तुलना में तेजी से होता है - 20 एमएस बनाम अपने कंप्यूटर पर 560 एमएस - जो, स्कॉट की संख्या से निकालने के द्वारा, समकक्ष इंडेक्सड डीबी की तुलना में इसे लगभग 10 गुना तेज बनाता है। मैं इसकी पुष्टि करने में सक्षम नहीं था क्योंकि इंडेक्स डीडी कोड मेरे ब्राउज़र में काम नहीं करता है, प्रतीत होता है कि एपीआई परिवर्तनों के कारण।
मुझे ऊपर लिखा गया "(लगभग)" समझा जाना चाहिए। स्कॉट के मूल एसक्यूएल और मेरे पास अलग-अलग अर्थ हैं: मेरे एपिसोडकाउंट पर एक gratuitous WHERE क्लॉज - जिसका एक इंडेक्स सर्च के साथ टेबल स्कैन को बदलने का असर पड़ता है - अगर यह सभी संभावित स्थिति मानों को कवर नहीं करता है तो कुछ एपिसोड गिनने में असफल हो सकता है। इस खंड को हटाने से निष्पादन समय को 40 एमएस तक दोगुनी करने के खर्च पर अंतर समाप्त हो जाता है।
ध्यान दें कि, पहले, मैं discussed with Scott अपने एसक्यूएल करने के लिए एक छोटे परिवर्तन यह है कि यह भी एक 40 एमएस समय प्राप्त होता है।
अद्यतन: स्कॉट को उनके article को अपडेट करने के लिए स्कॉट के बहुत धन्यवाद।
स्रोत
2012-11-17 00:13:13
यह एक दिलचस्प सवाल है। मैं अगले कुछ हफ्तों में कुछ परीक्षण करूँगा और यहां कुछ अपडेट प्राप्त होने पर एक अपडेट पोस्ट करूंगा। – buley