यदि MySQL को 11M पंक्तियों को गिनना है, तो वास्तव में एक साधारण गिनती को तेज करने का कोई तरीका नहीं है। कम से कम इसे उप 1 सेकंड की गति तक नहीं लाने के लिए। आपको पुनर्विचार करना चाहिए कि आप अपनी गिनती कैसे करते हैं। कुछ विचार:
-
तालिका में एक ऑटो इंक्रीमेंट फ़ील्ड जोड़ें। ऐसा लगता है कि आप तालिका से नहीं हटाएंगे, इसलिए आप रिकॉर्ड गणना खोजने के लिए सरल गणित का उपयोग कर सकते हैं। प्रारंभिक पहले की तारीख के लिए न्यूनतम ऑटो वेतन वृद्धि संख्या और बाद की तारीख के लिए अधिकतम का चयन करें और रिकॉर्ड गणना प्राप्त करने के लिए एक को दूसरे से घटाएं। उदाहरण के लिए:
SELECT min(incr_id) min_id FROM record_updates WHERE date_updated BETWEEN '2009-10-11 15:33:22' AND '2009-10-12 23:59:59'; SELECT max(incr_id) max_id FROM record_updates WHERE date_updated > DATE_SUB(NOW(), INTERVAL 2 DAY);`
-
प्रत्येक दिन के लिए रिकॉर्ड संख्या को सारांशित करते हुए एक अन्य तालिका बनाएं। फिर आप उस तालिका को कुल रिकॉर्ड के लिए क्वेरी कर सकते हैं। प्रत्येक वर्ष के लिए केवल 365 रिकॉर्ड होंगे। यदि आपको अधिक बारीक समय के लिए नीचे उतरने की आवश्यकता है, तो पूरे दिनों के लिए सारांश तालिका और प्रारंभ और समाप्ति दिनों के लिए केवल रिकॉर्ड गणना के लिए वर्तमान तालिका को क्वेरी करें। फिर उन सभी को एक साथ जोड़ें।
यदि डेटा नहीं बदल रहा है, जो ऐसा प्रतीत नहीं होता है, तो सारांश तालिकाओं को बनाए रखना और अपडेट करना आसान होगा। वे चीजों को काफी गति देंगे।