কম্পিউটার টিউটোরিয়াল

MySQL-এ ফাংশন-বেইসড ইন্ডেক্স (Function-based Index) সম্ভব কি?

MySQL 5.6-এর নিচের ভার্সনে ফাংশন-বেইসড ইন্ডেক্স সম্ভব ছিল না। ফাংশন-বেইসড ইন্ডেক্স তৈরি করতে প্রথমে একটি টেবিল তৈরি করুন।

mysql> CREATE TABLE FunctionIndexDemo
-> (
-> FirstName varchar(100)
-> );
Query OK, 0 rows affected (0.70 sec)

ফাংশন-বেইসড ইন্ডেক্স সিনট্যাক্স (Prefix Index)

CREATE INDEX index_name ON yourTableName (column_name(IntegerSize));

প্রয়োগ (FirstName কলামের প্রথম ৬ ক্যারেক্টারে ইন্ডেক্স):

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;

আউটপুট (Sub_part: 6 দেখাচ্ছে প্রিফিক্স লেন্থ):

+-------------------+------------+--------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
| 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)

গুরুত্বপূর্ণ আপডেট (MySQL 8.0.13+): এখন সত্যিকারের ফাংশন-বেইসড ইন্ডেক্স (Functional Index) INDEX ((LOWER(email))) বা INDEX ((CAST(json_col->>'$.name' AS CHAR(50)))) সিনট্যাক্সে তৈরি করা যায়। প্রিফিক্স ইন্ডেক্স (col(10)) ফাংশন-বেইসড ইন্ডেক্স নয়, এটি কলামের শুরুতে নির্দিষ্ট দৈর্ঘ্যের ইন্ডেক্স।

  1. MySQL-এ আন্ডারস্কোর (_) টেবিল নাম হিসেবে ব্যবহার করা (ব্যাকটিক)

  2. MySQL-এ তিনটি কলামের কম্পোজিট إندেক্স তৈরি করা

  3. MySQL টেবিল থেকে ইন্ডেক্স সরানো

  4. MySQL কম্পোজিট إندেক্স