मैंने कुछ कोशिश की SELECT COUNT(*) FROM MyTable
बनाम SELECT COUNT(SomeColumn) FROM MyTable
तालिकाओं के विभिन्न आकारों के साथ, और जहां SomeColumn
एक बार क्लस्टरिंग कुंजी कॉलम होता है, एक बार यह गैर-क्लस्टर इंडेक्स में होता है, और एक बार यह बिना किसी इंडेक्स में होता है।
सभी मामलों में, सभी आकार की तालिकाओं (300'000 पंक्तियों से 170 मिलियन पंक्तियों तक) के साथ, मुझे कभी भी कोई अंतर दिखाई नहीं देता है गति या निष्पादन योजना के संदर्भ में - सभी मामलों में, COUNT
क्लस्टर्ड इंडेक्स स्कैन -> यानी मूल रूप से पूरी तालिका को स्कैन करके नियंत्रित किया जाता है। यदि कोई गैर-संकुल अनुक्रमणिका शामिल है, तो स्कैन उस अनुक्रमणिका पर है - यहां तक कि SELECT COUNT(*)
करते समय भी !
गति या दृष्टिकोण के मामले में कोई अंतर नहीं लगता है कि उन चीजों की गणना कैसे की जाती है - उन सभी को गिनने के लिए, SQL सर्वर को केवल पूरी तालिका-अवधि को स्कैन करने की आवश्यकता होती है।
परीक्षण SQL Server 2008 R2 डेवलपर संस्करण पर किए गए थे