Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

CHAR/VARCHAR इंडेक्स का उपयोग करते समय MySQL प्रश्नों का प्रदर्शन इतना खराब क्यों है?

जाहिर है, मुद्दा यह है कि क्वेरी इंडेक्स स्कैन कर रही है। वैकल्पिक दृष्टिकोण दो इंडेक्स लुकअप करना होगा, पहले और आखिरी मानों के लिए जो समान हैं, और फिर गणना के लिए इंडेक्स में मेटा जानकारी का उपयोग करें। आपकी टिप्पणियों के आधार पर, MySQL दोनों करता है।

यह शेष उत्तर अटकलें हैं।

कारण यह है कि प्रदर्शन "केवल" 300 गुना धीमा है, बल्कि 200,000 गुना धीमा है, क्योंकि सूचकांक को पढ़ने में ओवरहेड है। वास्तव में आवश्यक अन्य कार्यों की तुलना में प्रविष्टियों को स्कैन करना काफी तेज है।

जब तुलना की बात आती है तो संख्याओं और तारों के बीच मूलभूत अंतर होता है। इंजन केवल दो संख्याओं के छोटे-छोटे निरूपणों को देख सकता है और पहचान सकता है कि वे समान हैं या भिन्न हैं। दुर्भाग्य से, स्ट्रिंग्स के लिए, आपको एन्कोडिंग/कोलेशन को ध्यान में रखना होगा। मुझे लगता है कि इसीलिए इसे मूल्यों को देखने की जरूरत है।

यह संभव है कि यदि आपके पास बिल्कुल . की 216,000 प्रतियां हों एक ही स्ट्रिंग, तो MySQL इंडेक्स में मेटाडेटा का उपयोग करके गिनती करने में सक्षम होगा। दूसरे शब्दों में, सूचकांक सटीक समानता तुलना के लिए मेटाडेटा का उपयोग करने के लिए पर्याप्त स्मार्ट है। लेकिन, एन्कोडिंग को ध्यान में रखना पर्याप्त स्मार्ट नहीं है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL 8.0 में MySQL प्रतिकृति के साथ नया क्या है

  2. एक अंतर्निहित सरणी को एक MySQL तैयार कथन में बाध्य करने में समस्या

  3. Google App Engine से SSL + Golang का उपयोग करके Google क्लाउड SQL से कनेक्ट नहीं हो सकता

  4. अमान्य पैरामीटर संख्या:बाध्य चर की संख्या सिद्धांत में टोकन की संख्या से मेल नहीं खाती

  5. MYSQL आकार में GB की विशाल SQL फ़ाइलें सम्मिलित करें