जाहिर है, मुद्दा यह है कि क्वेरी इंडेक्स स्कैन कर रही है। वैकल्पिक दृष्टिकोण दो इंडेक्स लुकअप करना होगा, पहले और आखिरी मानों के लिए जो समान हैं, और फिर गणना के लिए इंडेक्स में मेटा जानकारी का उपयोग करें। आपकी टिप्पणियों के आधार पर, MySQL दोनों करता है।
यह शेष उत्तर अटकलें हैं।
कारण यह है कि प्रदर्शन "केवल" 300 गुना धीमा है, बल्कि 200,000 गुना धीमा है, क्योंकि सूचकांक को पढ़ने में ओवरहेड है। वास्तव में आवश्यक अन्य कार्यों की तुलना में प्रविष्टियों को स्कैन करना काफी तेज है।
जब तुलना की बात आती है तो संख्याओं और तारों के बीच मूलभूत अंतर होता है। इंजन केवल दो संख्याओं के छोटे-छोटे निरूपणों को देख सकता है और पहचान सकता है कि वे समान हैं या भिन्न हैं। दुर्भाग्य से, स्ट्रिंग्स के लिए, आपको एन्कोडिंग/कोलेशन को ध्यान में रखना होगा। मुझे लगता है कि इसीलिए इसे मूल्यों को देखने की जरूरत है।
यह संभव है कि यदि आपके पास बिल्कुल . की 216,000 प्रतियां हों एक ही स्ट्रिंग, तो MySQL इंडेक्स में मेटाडेटा का उपयोग करके गिनती करने में सक्षम होगा। दूसरे शब्दों में, सूचकांक सटीक समानता तुलना के लिए मेटाडेटा का उपयोग करने के लिए पर्याप्त स्मार्ट है। लेकिन, एन्कोडिंग को ध्यान में रखना पर्याप्त स्मार्ट नहीं है।