कम्पोजिट इंडेक्स का उपयोग तब किया जा सकता है जब हम सबक्वेरी उपयोग कर रहे हों। कम्पोजिट इंडेक्स के उपयोग के फायदे निम्न मामलों में हैं:
- जॉइनिंग (Joining)
- फ़िल्टरिंग (Filtering)
- सिलेक्टिंग (Selecting)
निम्नलिखित इंडेक्स का सिंटैक्स है:
INDEX(column_name1, column_name2, column_name3, column_name4, ... N)
आइए पहले एक टेबल बनाएं और उसमें इंडेक्स सेट करें।
mysql> CREATE TABLE MultipleIndexDemo
> (
> id INT,
> FirstName VARCHAR(100),
> LastName VARCHAR(100),
> Address VARCHAR(200),
> INDEX(id, LastName, Address)
> );
Query OK, 0 rows affected (0.57 sec)
जांचने के लिए कि इंडेक्स सफलतापूर्वक बनाए गए हैं।
mysql> SHOW INDEX FROM MultipleIndexDemo;
निम्नलिखित आउटपुट है:
+-------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible |
+-------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
| multipleindexdemo | 1 | id | 1 | id | A | 0 | NULL | NULL | YES | BTREE | | | YES |
| multipleindexdemo | 1 | id | 2 | LastName | A | 0 | NULL | NULL | YES | BTREE | | | YES |
| multipleindexdemo | 1 | id | 3 | Address | A | 0 | NULL | NULL | YES | BTREE | | | YES |
+-------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
3 rows in set (0.18 sec)
महत्वपूर्ण: कम्पोजिट इंडेक्स कॉलम क्रम मायने रखता है (बाएं से दाएं)। WHERE/Order By/Join में बाएं-प्रत्यय (leftmost prefix) नियम लागू होता है। केवल सबक्वेरी के लिए नहीं, बल्कि मल्टी-कॉलम WHERE, JOIN, ORDER BY, GROUP BY के लिए उपयोगी।