mysql中这个 key 'base' 是什么意思?

比如创建一张表有如下语句:
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) 这么个东西,不知是何意?

阅读 3.7k
2 个回答

base是索引名没错,这个索引是多余的,至于你不带where条件的explain都会走base索引,是因为base索引相对主键聚簇索引更轻量级,innodb的每一个普通索引都带有主键的键值,且主键就是一个聚簇索引,叶子节点存储了该表的一整行数据。So..select的字段还在主键和base索引列范围内的话,走普通索引需要检索的数据块更少。

base应该是这个索引的名字吧,KEY base (xxx, yyy)KEY (xxx, yyy)效果应该是一样的。

但不清楚既然有了PK (xxx, yyy, zzz),要KEY (xxx, yyy)还有什么用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题