MySQL explain 中 key_len的詳解
MySQL explain中key_len的計算
key_len表示索引使用的位元組數,根據這個值可以判斷索引的使用情況,特別是在組合索引的時候,判斷該索引有多少部分被使用到非常重要。
在計算key_len時,下面是一些需要考慮的點:
索引欄位的附加資訊:
1.可以分為變長和定長資料型別討論;
2.當索引欄位為定長資料型別時,如char,int,datetime,需要有是否為空的標記,這個標記佔用一個位元組(對於not null來說不需要這一個位元組);
3.當索引欄位為變長資料型別時,如varchar,除了是否為空的標記外,還需要有長度資訊,需要佔用兩個位元組;
4.對於char,varchar,blob,text等,key_len的長度還和字符集有關,latin1 一個字元佔用一個位元組,gbk 一個字元佔用兩個位元組,utf8 一個字元佔用三個位元組
例如:
列型別 KEY_LEN 備註
id int key_len = 4+1 int為4bytes,允許為NULL,加1byte
id bigint not null key_len=8 bigint為8bytes
user char(30) utf8 key_len=30*3+1 utf8每個字元為3bytes,允許為NULL,加1byte
user varchar(30) not null utf8 key_len=30*3+2 utf8每個字元為3bytes,變長資料型別,加2bytes
user varchar(30) utf8 key_len=30*3+2+1 utf8每個字元為3bytes,允許為NULL,加1byte,變長資料型別,加2bytes
detail text(10) utf8 key_len=30*3+2+1 TEXT擷取部分,被視為動態列型別
備註:
key_len只表示了where中用於條件過濾時被選中的索引列,是不包含order by / group by 這一部分被選中的索引列的。
例如:
有一個聯合索引idx(a1,b2,c3),三列均是 int not null,那麼下面的執行計劃中key_len的值是8,不是12
select .... from table where c1=? and c2=? order by c1;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-2684894/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 詳解 MySQL 中的 explainMySqlAI
- MySQL執行計劃explain的key_len解析MySqlAI
- MySQL Explain詳解MySqlAI
- MySQL EXPLAIN 詳解MySqlAI
- FAQ系列|解讀EXPLAIN執行計劃中的key_lenAI
- MySQL explain命令詳解MySqlAI
- Mysql Explain 詳解 [原創]MySqlAI
- MySQL的EXPLAIN命令結果詳解MySqlAI
- MySQL EXPLAIN 命令詳解學習MySqlAI
- explain執行計劃中的key_len的計算規則AI
- [MySQL 優化] Explain 之 type 詳解MySql優化AI
- MySQL Explain執行計劃 - 詳解MySqlAI
- mysql explain 執行計劃詳解MySqlAI
- MySQL執行計劃EXPLAIN詳解MySqlAI
- MySQL explain 和 profiling 詳解MySqlAI
- MySQL 中的 EXPLAIN 命令MySqlAI
- MySQL explain執行計劃詳細解釋MySqlAI
- mysql 中的explain關鍵字MySqlAI
- MySQL中explain語句的使用MySqlAI
- MySQL中explain的幾點用法MySqlAI
- mysql explain 命令講解MySqlAI
- MySQL EXPLAIN命令詳解學習(檢視執行計劃)MySqlAI
- Explain執行計劃詳解AI
- SQL之EXPLAIN語法詳解SQLAI
- MySQL Explain的使用MySqlAI
- MySQL explainMySqlAI
- [Mysql]ExplainMySqlAI
- MySQL 中的事務詳解MySql
- MySQL的Explain結果輸出項解釋MySqlAI
- MySQL的Explain總結MySqlAI
- mysql explain的bug薦MySqlAI
- 【Mysql】MySQL查詢計劃key_len全知道MySql
- MySQL中BETWEEN子句的用法詳解MySql
- 詳解MySQL中WHERE子句的用法MySql
- MySQL 索引 +explainMySql索引AI
- (4) MySQL中EXPLAIN執行計劃分析MySqlAI
- MySQL執行計劃裡面的key_lenMySql
- MySQL 中 show full processlist 詳解MySql