निम्नलिखित ब्लॉग पोस्ट पर एक नज़र डालें:
1) COUNT(***) बनाम COUNT(col)ए>
2) आसान MySQL प्रदर्शन युक्तियाँ
3) InnoDB के लिए फास्ट काउंट(*)
बीटीडब्ल्यू, आप किस इंजन का उपयोग करते हैं?
संपादित: तकनीक के बारे में गिनती में तेजी लाने के लिए जब आपको यह जानने की आवश्यकता होती है कि क्या कुछ मात्रा में पंक्तियाँ हैं। क्षमा करें, मेरी क्वेरी में बस गलत था। इसलिए, जब आपको केवल जानने की आवश्यकता हो, यदि कोई उदा. विशिष्ट स्थिति के अनुसार 300 पंक्तियाँ आप सबक्वेरी आज़मा सकते हैं:
select count(*) FROM
( select 1 FROM _table_ WHERE _conditions_ LIMIT 300 ) AS result
सबसे पहले आप परिणाम सेट को छोटा करें, और फिर परिणाम गिनें; यह अभी भी परिणाम सेट को स्कैन करेगा, लेकिन आप इसे सीमित कर सकते हैं (एक बार और, यह तब काम करता है जब डीबी का प्रश्न "यहां 300 से अधिक पंक्तियों से अधिक या कम है), और यदि डीबी में 300 से अधिक पंक्तियां हैं जो इस शर्त को पूरा करती हैं कि क्वेरी तेज है
परीक्षण के परिणाम (मेरी तालिका में 6.7mln पंक्तियाँ हैं):
1) SELECT count(*) FROM _table_ WHERE START_DATE > '2011-02-01'
65.4 सेकंड के लिए 4.2mln लौटाता है
2) SELECT count(*) FROM ( select 1 FROM _table_ WHERE START_DATE > '2011-02-01' LIMIT 100 ) AS result
0.03 सेकंड के लिए 100 देता है
वहाँ क्या हो रहा है यह देखने के लिए व्याख्या क्वेरी का परिणाम नीचे दिया गया है:
EXPLAIN SELECT count(*) FROM ( select 1 FROM _table_ WHERE START_DATE > '2011-02-01' LIMIT 100 ) AS result