鍍金池/ 問答/數(shù)據(jù)庫/ mysql中這個 key 'base' 是什么意思?

mysql中這個 key 'base' 是什么意思?

比如創(chuàng)建一張表有如下語句:
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

聯(lián)合主鍵我在建表的時候設(shè)置的是xxx,yyy和zzz。由于不是用語句創(chuàng)建表的,而是用workbench創(chuàng)建表,后來查詢自動生成的創(chuàng)建表的語句,發(fā)現(xiàn) KEY base (xxx,yyy) 這么個東西,不知是何意?

回答
編輯回答
心夠野

base應(yīng)該是這個索引的名字吧,KEY base (xxx, yyy)KEY (xxx, yyy)效果應(yīng)該是一樣的。

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

2017年9月3日 23:11
編輯回答
吢涼

base是索引名沒錯,這個索引是多余的,至于你不帶where條件的explain都會走base索引,是因?yàn)閎ase索引相對主鍵聚簇索引更輕量級,innodb的每一個普通索引都帶有主鍵的鍵值,且主鍵就是一個聚簇索引,葉子節(jié)點(diǎn)存儲了該表的一整行數(shù)據(jù)。So..select的字段還在主鍵和base索引列范圍內(nèi)的話,走普通索引需要檢索的數(shù)據(jù)塊更少。

2017年7月10日 02:02