फंक्शन-बेस्ड इंडेक्स MySQL 5.6 से नीचे के संस्करणों में संभव नहीं था। सबसे पहले, MySQL में फंक्शन-बेस्ड इंडेक्स बनाने के लिए, हम एक टेबल बनाएंगे।
mysql> create table FunctionIndexDemo -> ( -> FirstName varchar(100) -> ); Query OK, 0 rows affected (0.70 sec)
आइए फंक्शन बेस्ड इंडेक्स बनाने का सिंटैक्स देखते हैं।
create index index_name on yourTableName (column_name(IntegerSize));
यहां क्वेरी है।
mysql> create index indFirstName on FunctionIndexDemo (FirstName(6)); Query OK, 0 rows affected (0.56 sec) Records: 0 Duplicates: 0 Warnings: 0
जांचने के लिए कि इंडेक्स मौजूद है या नहीं।
mysql> SHOW INDEX FROM FunctionIndexDemo;
यहां आउटपुट है।
+-------------------+------------+--------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | +-------------------+------------+--------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ | functionindexdemo | 1 | indFirstName | 1 | FirstName | A | 0 | 6 | NULL | YES | BTREE | | | YES | +-------------------+------------+--------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ 1 row in set (0.24 sec)
स्पष्टीकरण:FirstName(6)एक प्रीफिक्स इंडेक्स बनाता है (पहले 6 वर्णों को इंडेक्स करता है), पूर्ण फंक्शन-बेस्ड इंडेक्स नहीं। MySQL 8.0+ फंक्शनल इंडेक्स (जिसे जनरेटेड कॉलम इंडेक्स भी कहा जाता है) का समर्थन करता है:ALTER TABLE t ADD COLUMN name_upper VARCHAR(100) GENERATED ALWAYS AS (UPPER(name)) VIRTUAL, ADD INDEX (name_upper);। यहUPPER(name),JSON_EXTRACT, आदि जैसे व्यंजकों पर इंडेक्सिंग की अनुमति देता है।