簡介mysql
今天記錄下索引基礎知識sql
一、mysql單表最多支持多少個索引,索引總長度爲多少?mysql索引
索引是在存儲引擎中實現的,所以每種存儲引擎的索引都不必定徹底相同,而且每種存儲引擎也不必定支持全部索引類型。編碼
大多數存儲引擎有更高的限制。MySQL中索引的存儲類型有兩種:BTREE和HASH,具體和表的存儲引擎相關;.net
MYISAM和InnoDB存儲引擎只支持BTREE索引;MEMORY和HEAP存儲引擎能夠支持HASH和BTREE索引3d
二、mysql在MySQL文檔裏,其實是把B+樹索引寫成了BTREE,以下圖blog
千萬別覺得mysql mysiam和innoDB用的是B樹索引
三、mysql怎麼建一個聚餐索引?文檔
InnoDb將經過主鍵彙集數據,若是沒有定義主鍵,InnoDB 會選擇一個惟一的非空索引代替。若是沒有這樣的索引,InnoDB 會隱式定義一個主鍵來做爲聚簇索引get
四、mysql索引長度限制
myisam表,單列索引,最大長度不能超過 1000 bytes;
innodb表,單列索引,最大長度不能超過 767 bytes;聯合索引還有一個限制是長度不能超過3072
utf8 編碼時 一個字符佔三個字節
varchar 型能創建索引的最大長度分別爲
myisam 1000/3 333
innodb 767/3 255
utf8mb4 編碼時 一個字符佔四個字節
varchar 型能創建索引的最大長度分別爲
myisam 1000/4 250
innodb 767/4 191