联合索引的最左前缀原则,结合MySQL实例
2019-02-27| 程成| 380| 0| MySQL

下面结合 MySQL 实例说说联合索引中最左前缀原则。首先创建一张表 student,建立联合索引 name 和 sex。


-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(255) NOT NULL DEFAULT '',
  `sex` tinyint(1) NOT NULL DEFAULT '0',
  `qq` char(13) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `index_name` (`name`,`sex`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;



再导入两条数据


-- ----------------------------
-- Records of student
-- ----------------------------
BEGIN;
INSERT INTO `student` VALUES (1, 'chengcheng', 1, 'df1dfdf');
INSERT INTO `student` VALUES (2, 'mali', 2, 'dfff111');
COMMIT;



实例:


(1)

image.png


可见当 name 和 sex 同时判断时,用到了联合索引 index_name。




(2)image.png


当只有 name,没有 sex 判断时,也用到了联合索引 index_name。



(3)

image.png


当只有 sex,没有 name 判断时,没有用到联合索引 index_name。



以上就是结合实例,来说明 MySQL 联合索引的最左前缀原则。



×
作者:程成
QQ:492245711