गिनती (आईडी) की तुलना में बेहतर प्रदर्शन किया है पहले तो मुझे गिनती (*) की तुलना करने और (आईडी) गिनती चाहते हैं, जो बेहतर प्रदर्शन है?क्यों mysql गिनती (*)
mysql संस्करण
5.6.21-1~dotdeb.1-log
तालिका जानकारी
PRIMARY KEY (`id`),
KEY `is_availability` (`is_availability`,`is_del`)
ENGINE=InnoDB AUTO_INCREMENT=48993819 DEFAULT CHARSET=utf8
तुलना के बिना जहां हालत
select count(*) from op_log; +----------+ | count(*) | +----------+ | 48989975 | +----------+ 1 row in set (10.02 sec) select count(id) from op_log ; +-----------+ | count(id) | +-----------+ | 48989990 | +-----------+ 1 row in set (12.05 sec)
count(*)
की तुलना में बेहतर count(id)
जहां हालत
select count(*) from op_log where is_availability=1; +----------+ | count(*) | +----------+ | 48990038 | +----------+ 1 row in set (15.86 sec) select count(id) from op_log where is_availability=1; +-----------+ | count(id) | +-----------+ | 48990096 | +-----------+ 1 row in set (17.13 sec)
count(*)
अभी भी की तुलना में बेहतरcount(id)
तो साथ तुलना अगर मैं निष्कर्ष है कि count(*)
आकर्षित कर सकता है count(id)
से बेहतर प्रदर्शन है और यह क्यों है?
High Performance MySQL
से, मैं
मिला अगर mysql जानता है कुछ col नल नहीं हो सकता है, यह गणना (col) को अनुकूलित करेंगे गिनती करने के लिए (*) आंतरिक रूप से
तो मैं उस समय खर्च पर शक इस अनुकूलन कार्य करने के लिए और अधिक उपयोग किया जाता है।
'id' कैसे परिभाषित किया गया है? – Matthew
खोज आपका मित्र है: https://duckduckgo.com/?q=mysql+count+performance&t=ffsb - इसमें बहुत से ब्लॉग पोस्ट शामिल हैं। – Augusto
mysql में [तेज़, गिनती (\ *) या गिनती (तालिका \ _field \ _name) की संभावित डुप्लिकेट?] (Http://stackoverflow.com/questions/7515531/whats-faster-count-or-counttable-field -name-इन-mysql) – Augusto