मेरा कूबड़ यह है कि एक अहस्ताक्षरित int और एक varchar 40 (विशेष रूप से varchar!) के साथ अब आपके पास एक बड़ी प्राथमिक कुंजी है और यह आपकी अनुक्रमणिका फ़ाइल को आपके पास Innodb_buffer_pool के लिए जो भी RAM है, उसमें फिट होने के लिए बहुत बड़ी है। इससे InnoDB को खोज करते समय इंडेक्स पेजों को स्वैप करने के लिए डिस्क पर निर्भर रहना पड़ता है और यह बहुत सारे डिस्क की तलाश में है और बहुत सारे CPU काम नहीं करता है।
इसी तरह के मुद्दे के लिए मैंने जो एक काम किया है, वह वास्तव में प्राकृतिक कुंजी और सरोगेट कुंजी के बीच में कुछ का उपयोग करना है। हम 2 फ़ील्ड लेंगे जो वास्तव में अद्वितीय हैं (जिनमें से एक वर्चर भी था) और एप्लिकेशन परत में एक निश्चित चौड़ाई एमडी 5 हैश बनायेगा और कुंजी के रूप में इसका उपयोग करेगा। हां, इसका मतलब ऐप के लिए अधिक काम है लेकिन यह बहुत छोटी अनुक्रमणिका फ़ाइल बनाता है क्योंकि अब आप मनमाने ढंग से लंबाई वाले फ़ील्ड का उपयोग नहीं कर रहे हैं।
या, आप बस बहुत सारे RAM वाले सर्वर का उपयोग कर सकते हैं और देख सकते हैं कि क्या यह इंडेक्स को मेमोरी में फिट करता है, लेकिन मैं हमेशा 'हार्डवेयर को इस पर फेंकना' को अंतिम उपाय बनाना पसंद करता हूं :)