mysql联合索引的使用
命名规则:表名_字段名
1、需要加索引的字段,要在where条件中
2、数据量少的字段不需要加索引
3、如果where条件中是OR关系,加索引不起作用
4、符合最左原则
以下是我的建表语句
CREATE TABLE `test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_name` varchar(200) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`sex` int(11) DEFAULT NULL,
`date` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `UNIONINDEX` (`age`,`sex`,`date`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
explain select * from test where user_name='xxx'
explain select * from test where sex=1
explain select * from test where age=1
explain select * from test where age=1 and sex=1
前面几种情况都是符合最左原则的,当设置联合索引第一个字段为age时,那么索引中where条件中一定要有一个条件是age才会生效索引
如果没有age就不会使用到联合索引
explain select * from test where date='2018-2-10' and sex=1