前言
最近面试多次被问到联合索引的问题,交流之后发现很多遗漏的地方,所以来整理一下。
最左前缀匹配原则
在mysql建立联合索引时会遵循最左前缀匹配的原则,即最左优先,在检索数据时从联合索引的最左边开始匹配
示例:
CREATE TABLE `user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` char(32) NOT NULL,
`city` varchar(30) NOT NULL,
`age` tinyint(4) NOT NULL,
PRIMARY KEY (`id`),
KEY `name_city_name` (`name`,`city`,`age`)
) ENGINE=InnoDB AUTO_INCREMENT=6103 DEFAULT CHARSET=utf8;
联合索引
KEY `name_city_name` (`name`,`city`,`age`)
实际上建立了 (name),(name,city),(name,city,age) 三个索引
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。