比如创建一张表有如下语句:
CREATE TABLE quote_kline_1day_test
(xxx
varchar(20) NOT NULL,yyy
varchar(20) NOT NULL,zzz
datetime NOT NULL,aaa
date NOT NULL,bbb
double NOT NULL,ccc
double NOT NULL,
PRIMARY KEY (xxx
,yyy
,zzz
),
KEY base
(xxx
,yyy
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
联合主键我在建表的时候设置的是xxx,yyy和zzz。由于不是用语句创建表的,而是用workbench创建表,后来查询自动生成的创建表的语句,发现 KEY base
(xxx
,yyy
) 这么个东西,不知是何意?
base是索引名没错,这个索引是多余的,至于你不带where条件的explain都会走base索引,是因为base索引相对主键聚簇索引更轻量级,innodb的每一个普通索引都带有主键的键值,且主键就是一个聚簇索引,叶子节点存储了该表的一整行数据。So..select的字段还在主键和base索引列范围内的话,走普通索引需要检索的数据块更少。