前言

最近面试多次被问到联合索引的问题,交流之后发现很多遗漏的地方,所以来整理一下。

最左前缀匹配原则

在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) 三个索引

参考:
https://www.jb51.net/article/...


卓越教授
1 声望0 粉丝

引用和评论

0 条评论