का उपयोग कर प्रदर्शन मैं एसक्यूएल सर्वर 2012DISTINCT COUNT
चला रहा हूँ मैं एक प्रश्न है कि जब धारीदार यह सबसे बुनियादी रूप है करने के लिए है इस तरह दिखता है:
SELECT COUNT(DISTINCT fullAddress) as quickCount
FROM leads
WHERE yearID >=12 AND yearID <=21
सुराग तालिका में के बारे में 149 मिलियन रिकॉर्ड है यह। लीडआईडी पर एक क्लस्टर्ड इंडेक्स और गैर-क्लस्टर इंडेक्स है जो साल आईडी पर इंडेक्स है और इसमें पूर्ण एड्रेस शामिल है।
इस क्वेरी को चलाने के लिए लगभग 40 सेकंड लगते हैं। मुझे एहसास है कि बुरा नहीं है लेकिन इस स्थिति में यह पर्याप्त तेज़ नहीं है।
मैंने निष्पादन योजना को देखा और मैं 60% लागत के बारे में बता सकता हूं कि DISTINCT COUNT है।
SELECT COUNT(*) as quickCount
FROM leads
WHERE yearID >=12 AND yearID <=21
यह चलाने के लिए केवल 1 सेकंड लेता है:
जब मैं इस तरह DISTINCT COUNT बिना एक ही क्वेरी चलाते हैं।
दुर्भाग्य से, मुझे अलग-अलग पूर्ण पते की गिनती प्राप्त करने की आवश्यकता है। इसलिए मैं यह पता लगाने की कोशिश कर रहा हूं कि पहली क्वेरी को तेजी से चलाने के लिए मैं कुछ कर सकता हूं या नहीं। - http://www.sequenzia.com/execPlan.jpg
क्या मैं अपने मुख्य समस्या बता सकते हैं है
यहाँ यह देखने के लिए भी बड़ा है कि करने के लिए एक कड़ी है:
यहाँ दोनों प्रश्नों के लिये कार्य योजना का एक स्क्रीनशॉट है विशिष्ट क्रमबद्ध (52%)।
इस पर कोई मदद या प्रतिक्रिया बहुत अच्छी होगी।
धन्यवाद!
अद्यतन
मैं थिलो की सलाह मान ली और इस सूचकांक लागू:
CREATE INDEX IDX_X ON LEADS(FULLADDRESS, YEARID);
मैं वास्तव में उनमें से प्रत्येक में ठीक उसी 1 मिलियन रिकॉर्ड के साथ 2 नए परीक्षण टेबल बनाया। मैंने अपनी मूल सूचकांक दोनों को उपरोक्त इंडेक्स को केवल एक के लिए लागू किया। अब जब मैं उसी निष्पादन योजना पर 2 तालिकाओं की तुलना करता हूं तो उपर्युक्त सूचकांक वाला एक व्यक्ति 48% से 52% बेहतर होता है। यहां नई निष्पादन योजना है - http://www.sequenzia.com/execPlan2.jpg
इससे कुछ मदद मिलती है लेकिन मुझे वास्तव में अधिक प्रदर्शन की आवश्यकता है। कोई अन्य विचार?