Mysql explain中key_len的作用及計算規則


key_len表示索引使用的字節數,根據這個值可以判斷索引的使用情況,特別是在組合索引的時候,判斷該索引有多少部分被使用到非常重要。

在計算key_len時,下面是一些需要考慮的點:

索引字段的附加信息:

  • 可以分為變長和定長數據類型討論;
  • 當索引字段為定長數據類型時,如char,int,datetime,需要有是否為空的標記,這個標記占用1個字節(對於not null來說不需要這1個字節);
  • 當索引字段為變長數據類型時,如varchar,除了是否為空的標記外,還需要有長度信息,需要占用2個字節;
  • 對於char,varchar,blob,text等,key_len的長度還和字符集有關,latin1 一個字符占用1個字節,gbk 一個字符占用2個字節,utf8 一個字符占用3個字節.

 

key_len的長度計算公式(key_len越小 索引效果越好):

varchr(10)變長字段且允許NULL    =  10 * ( character set:utf8=3,gbk=2,latin1=1)+1(NULL)+2(變長字段)

varchr(10)變長字段且不允許NULL =  10 *( character set:utf8=3,gbk=2,latin1=1)+2(變長字段)

char(10)固定字段且允許NULL        =  10 * ( character set:utf8=3,gbk=2,latin1=1)+1(NULL)

char(10)固定字段且不允許NULL     =  10 * ( character set:utf8=3,gbk=2,latin1=1)

此外:

bigint的長度是8 字節

int 的長度是4 字節

typeint的長度是1 字節

smallint 長度是2 字節

middleint長度是3 字節

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM