CREATE TABLE users ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(30) NOT NULL, last_name VARCHAR(30) NOT NULL, age INT(3), email VARCHAR(50), INDEX fullname (first_name,last_name) );
以上是创建一个名为users的表,并在其中创建一个联合索引fullname,该索引包含了first_name和last_name两列。通过使用联合索引,大家可以快速地查询符合某个姓名的用户记录。
MySQL在查询时会尽可能地使用索引来提高查询效率。当查询语句中包含联合索引中列名的顺序和数量完全一致时,MySQL就可以利用这个联合索引进行查询。
但是当查询语句中只包含部分联合索引中的列名时,MySQL就无法利用这个联合索引。例如,下面的查询语句只包含first_name列:
SELECT * FROM users WHERE first_name='Tom';
此时,MySQL无法利用fullname索引进行查询,需要使用单独的first_name索引或者全表扫描。
所以,对于联合索引,大家需要根据实际情况进行设计和优化,避免出现无法利用索引的情况。