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