नहीं, सामान्य अर्थ में नहीं, मुझे विश्वास नहीं है कि 5.6 भी (नवीनतम संस्करण जब यह उत्तर पहली बार लिखा गया था) में यह कार्यक्षमता है। यह ध्यान देने योग्य है कि 8.0.13 और इसके बाद के संस्करण अब समर्थन करते हैं फंक्शनल इंडेक्स , आपको नीचे वर्णित ट्रिगर विधि के बिना वह हासिल करने की अनुमति देता है जिसकी आपको आवश्यकता है।
यदि आप mysql
. का पुराना संस्करण चला रहे हैं , यह है केवल अग्रणी . का उपयोग करना संभव है एक कॉलम का हिस्सा (यह कार्यक्षमता लंबे समय से आसपास रही है), लेकिन दूसरे या बाद के वर्णों, या किसी अन्य जटिल फ़ंक्शन से शुरू होने वाला नहीं।
उदाहरण के लिए, निम्नलिखित नाम के पहले पांच वर्णों का उपयोग करके एक अनुक्रमणिका बनाता है:
create index name_first_five on cust_table (name(5));
अधिक जटिल अभिव्यक्तियों के लिए, आप दूसरा . होने के द्वारा समान प्रभाव प्राप्त कर सकते हैं इंडेक्स करने योग्य डेटा के साथ कॉलम, फिर इंसर्ट/अपडेट ट्रिगर्स का उपयोग करके यह सुनिश्चित करने के लिए कि यह सही ढंग से भरा हुआ है।
अनावश्यक डेटा के लिए व्यर्थ स्थान के अलावा, यह लगभग एक ही बात है।
और, हालांकि यह तकनीकी रूप से 3NF का उल्लंघन करता है, लेकिन डेटा को सिंक में रखने के लिए ट्रिगर्स के उपयोग से इसे कम किया जाता है (यह कुछ ऐसा है जो अक्सर अतिरिक्त प्रदर्शन के लिए किया जाता है)।