यह पूरी तरह से एक MySQL समस्या है -
MySQL के अलग-अलग इंजन हैं - MyISAM, InnoDB, मेमोरी...
MySQL में आपके द्वारा उपयोग किए जाने वाले स्थान की मात्रा पर अलग-अलग सीमाएं हैं कॉलम पर इंडेक्स परिभाषित करें - माईसाम के लिए यह 1,000 बाइट्स है; InnoDB के लिए यह 767 है
. और उन स्तंभों का डेटा प्रकार मायने रखता है - VARCHAR
. के लिए , यह 3x है इसलिए VARCHAR(100)
. पर एक इंडेक्स उनमें से 300 बाइट्स लेंगे (क्योंकि 100 वर्ण * 3 =300)।
जब आप उच्चतम मूल्य पर पहुँचते हैं तो कुछ अनुक्रमण को समायोजित करने के लिए, आप स्तंभ डेटा प्रकार के भागों के संबंध में अनुक्रमणिका को परिभाषित कर सकते हैं:
CREATE INDEX example_idx ON YOUR_TABLE(your_column(50))
मान लें कि your_column
है VARCHAR(100)
, ऊपर के उदाहरण में अनुक्रमणिका केवल पहले 50 वर्णों पर होगी। 50वें वर्ण से आगे के डेटा की खोज करने से अनुक्रमणिका का उपयोग नहीं किया जा सकेगा।