2009-11-08 15 views
17

में निम्नलिखित प्रश्नों के बीच कोई अंतर है, मानते हैं कि तालिका में प्राथमिक फ़ील्ड 'आईडी' है (जैसे गति, आदि)?COUNT (आईडी) बनाम COUNT (*) MySQL

SELECT COUNT(id) 
    FROM table 

बनाम

SELECT COUNT(*) 
    FROM table 
+0

आप इन धागे को देख सकते हैं http://stackoverflow.com/questions/1221559/count-vs-count1 http://stackoverflow.com/questions/433913/in-sql-is-there-a-difference- बीच-गिनती और गिनफील्डनाम http://stackoverflow.com/questions/59294/in-sql-whats-the-difference-between-countcolumn-and-count –

उत्तर

16

www.mysqlperformanceblog.com पर Count(*) vs Count(col) पर एक नज़र डालें, वे विभिन्न 'col' प्रकार के लिए इस विषय पर चर्चा (या नल नहीं नहीं, सूचकांक के साथ, आदि) और यह MyISAM और InnoDB तालिकाओं के लिए।

2

मुझे पता है कि सवाल MySQL के बारे में है, लेकिन इसके लायक होने के लिए, ओरेकल के लिए गिनती (*) की सिफारिश की जाती है: जो यह दिखाता है कि यह डेटाबेस विशिष्ट है (बलुससी से ऊपर टिप्पणी देखें)। चूंकि बहुत से डेटाबेस (एमएस-एसक्यूएल, माईएसक्यूएल) में सूचना स्कीमा टेबल हैं जो विभिन्न प्रकार के मेटाडाटा धारण करते हैं, यदि अंतर एक सिंटैक्स बस आसानी से उपलब्ध मूल्य को देख रहा है, तो दूसरा अंतर हो सकता है, और दूसरा टेबल पर सीधे जा रहा है । दिन के अंत में: विभिन्न विकल्पों को आज़माएं, देखें कि एक्सप्लाइन क्या कह रहा है कि आप दृश्यों के पीछे चल रहे हैं।

+1

ऐसा लगता है कि जाने का तरीका यह है कि अधिक से अधिक या तो एक ओआरएम का उपयोग करने के लिए (और आशा है कि यह सभी मामलों के लिए अनुकूलित हो), या बिल्कुल * एक * डेटाबेस इंजन के लिए एसक्यूएल लिखने के लिए और बाकी के बारे में भूल जाओ। –

0

गणना (*) गणना (Ename) diff आउटपुट दिखा सकते हैं क्योंकि Ename अशक्त नहीं बाधा से कोई स्तंभ नहीं है और यह निश्चित रूप से कुछ अशक्त होने का सम्मान करता कौन सा नहीं गिना जा रहा है हो सकता है।

उम्मीद है कि यह मदद करता है ..!

संबंधित मुद्दे