什么是MySQL联合索引
联合索引又叫复合索引,是MySQL的InnoDB引擎中的一个索引方式,如果一个系统频繁地使用相同的几个字段查询结果,就可以考虑建立这几个字段的联合索引来提高查询效率。
如何建立索引
举个例子:
create table `table_name`(
`id` bigint(20) NOT NULL PRIMARY KEY,
`a` int(11),
`b` int(11),
`c` varchar(22),
KEY `key_a_b_c` (`a`,`b`,`c`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
如上面的代码其中
KEY `key_a_b_c` (`a`,`b`,`c`)
语句就是建立了a,b,c字段联合索引的语句。
最左前缀原则
在使用联合索引时要注意有个最左前缀原则,最左前缀原则就是要考虑查询的字段的顺序,只有遵守这个原则才能最大地提高查询的效率,下面我们举个例子说明最左前缀原则。
建立 (a,b,c)的联合索引
#完全按创建的顺序,能走到a,b,c3个字段的索引,评级:优化最高
SELECT * FROM tz_prod.table_name where a = 1 and b=2 and c = '3';
#换了b和c的顺序,MySQL会进行优化,效率和上面的一样