1. 程式人生 > >【資料庫原理】如何計算mysql索引key_len

【資料庫原理】如何計算mysql索引key_len

測試開始:

一、我們首先繼續按上篇部落格的資料來進行測試

 

有上面的效果對比我們可以看得出來,當索引欄位沒有設定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;