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

क्या MySQL कंपोजिट इंडेक्स को ऑर्डर करने के लिए कोई इष्टतम तरीका है?

एक सामान्य नियम के रूप में, एक बहु-स्तंभ अनुक्रमणिका में, आप चाहते हैं कि उच्चतम कार्डिनैलिटी वाले स्तंभ, या दूसरे शब्दों में, विशिष्ट मानों की उच्चतम संख्या, अनुक्रमणिका में पहले आए।

अधिक सटीक होने के लिए, आप चाहते हैं कि सबसे कम संभव मिलान वाला कॉलम आपके खोज मानदंड से पहले हो ताकि आप जितना संभव हो सके परिणाम को कम कर सकें, लेकिन सामान्य तौर पर, यह उच्चतम कार्डिनैलिटी के समान है।

इसलिए, आपके उदाहरण में, आप चाहते हैं कि केवल 6 अलग-अलग मानों वाले कॉलम से पहले लाखों अलग-अलग मान इंडेक्स में हों।

यह मानते हुए कि आप लाखों मानों में से केवल एक पंक्ति का चयन कर रहे हैं, यह आपको अधिक पंक्तियों को तेज़ी से समाप्त करने की अनुमति देता है।

समान कार्डिनैलिटी वाले दो स्तंभों पर विचार करते समय, छोटे वाले को पहले रखें (INTEGER VARCHAR . से पहले के कॉलम कॉलम) क्योंकि MySQL तुलना कर सकता है और उन पर तेजी से पुनरावृति कर सकता है।

एक चेतावनी यह है कि यदि आप श्रेणियों के साथ चयन कर रहे हैं (उदा. WHERE datecol > NOW() ), तो आप चाहते हैं कि रेंज कॉलम सबसे दूर दाईं ओर हों, और आपके कॉलम एक स्थिरांक वाले हों (जैसे। WHERE id = 1 ) बांई ओर। ऐसा इसलिए है क्योंकि आपकी अनुक्रमणिका का उपयोग केवल प्रथम श्रेणी मान तक खोजने और ऑर्डर करने के लिए किया जा सकता है।




  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 में एकाधिक सम्मिलित पंक्तियों की आईडी कैसे प्राप्त करूं?

  2. MySQL टाइमज़ोन परिवर्तन?

  3. एसक्यूएल में दो कॉलम से अद्वितीय जोड़े कैसे खोजें?

  4. प्रति पृष्ठ अधिकतम SQL क्वेरी

  5. PHP, MYSQLi और PDO में एकाधिक डेटाबेस कैसे कनेक्ट करें?