【資料庫原理】如何計算mysql索引key_len
阿新 • • 發佈:2018-12-16
測試開始:
一、我們首先繼續按上篇部落格的資料來進行測試
有上面的效果對比我們可以看得出來,當索引欄位沒有設定notnull為true時,需要增加一個位元組來判斷欄位是否為空,而且,int型別欄位索引佔4個位元組長。
二、當我把strvalue欄位更改為varchar(255)型別,不可為null時:
更改為varchar(100):
總結:varchar(n)型別索引欄位,key_len=n(字元)*3+2(位元組);
更改為char(100)時:
總結:char(n)型別索引欄位,key_len=n(字元)*3;
大總結:
1.所有的索引欄位,如果沒有設定notnull,則需要加一個位元組。
2.定長欄位,int佔四個位元組、date佔三個位元組、char(n)佔n個字元。
3.對於變長欄位varchar(n)來說,還需要佔用2個位元組來表示長度資訊,所以有n個字元+兩個位元組。
4.當然我們建立索引的時候還可以制定索引的長度(非空),比方說:
alter table t_test add index index_value(strvalue(100));其中100指的是字元的個數,如果欄位型別為utf-8編碼varchar(255),key_len=100*3+2=302;