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

क्या हमें सॉर्ट कॉलम, कंपोजिट इंडेक्स (MySQL) पर प्राथमिक कुंजी शामिल करनी चाहिए

उत्तर आपके द्वारा उपयोग किए जाने वाले इंजन पर निर्भर करता है:

  • MyISAM - इंडेक्स में आईडी जोड़ने से शायद मदद मिलेगी और हो सकती है
  • InnoDB - प्राथमिक कुंजी पहले से ही प्रत्येक माध्यमिक अनुक्रमणिका का हिस्सा है, क्योंकि innodb प्राथमिक कुंजी द्वारा क्रमबद्ध BTREE में पंक्तियों को संग्रहीत करता है और वास्तविक पंक्ति को इंगित करने के लिए अनुक्रमणिका को प्राथमिक की आवश्यकता होती है - उस स्थिति में इसे जोड़ना अनावश्यक है यदि यह अनुक्रमणिका में अंतिम है ( लेकिन ऐसा करने से इसे दो बार नहीं जोड़ा जाएगा, इसलिए इससे चीजें खराब नहीं होनी चाहिए)। कुछ मामलों में आप इसे नॉट-लास्ट के रूप में जोड़ना चाह सकते हैं, या आपके पास मल्टीकॉलम प्राथमिक है और आप अपने इंडेक्स में कुछ कॉलम अलग-अलग क्रम में जोड़ते हैं - इसमें कोई समस्या नहीं होनी चाहिए, इनोडब प्राथमिक के शेष कॉलम को उस इंडेक्स में जोड़ देगा, लेकिन पहले जोड़े गए लोगों की नकल किए बिना उनका उपयोग कर सकते हैं)

तो जवाब:

  1. InnoDB में यह अनावश्यक है, MyISAM में यह अच्छा है यदि आप वास्तव में उस सॉर्टिंग का उपयोग करते हैं, यदि आप इसका उपयोग नहीं करते हैं, तो इसे जोड़ने से केवल वह इंडेक्स बड़ा होता है।
  2. तालिका परिभाषा में स्तंभों का क्रम और अनुक्रमणिका में क्रम अलग-अलग चीजें हैं, इसलिए यह ठीक है
  3. हां, वह सूचकांक वास्तव में अच्छा लगता है - लेकिन आप व्याख्या करें , और भी बेहतर प्रदर्शन की संभावना है - "इंडेक्स को कवर करना ", लेकिन यह एक लागत के साथ आता है, इसलिए जब तक कि क्वेरी महत्वपूर्ण और खराब प्रदर्शन वाली न हो, यह संभवतः अधिक है।



  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 और माइग्रेशन के साथ एंटिटी फ्रेमवर्क विफल हो रहा है क्योंकि अधिकतम कुंजी लंबाई 767 बाइट्स है

  2. DROP डेटाबेस अनुमतियों के बिना कमांड-लाइन से सभी MySQL तालिकाओं को कैसे निकालें?

  3. अनावश्यक डेटा के डीबी की सफाई

  4. डॉकर लिखें mysql आयात .sql

  5. Php . के साथ MySql डेटाबेस में ब्लॉब्स डालें