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 explain命令詳解MySqlAI
- MySQL explain 和 profiling 詳解MySqlAI
- mysql explain 執行計劃詳解MySqlAI
- [MySQL 優化] Explain 之 type 詳解MySql優化AI
- MySQL Explain執行計劃 - 詳解MySqlAI
- MySQL 中的 EXPLAIN 命令MySqlAI
- MySQL explain執行計劃詳細解釋MySqlAI
- mysql 中的explain關鍵字MySqlAI
- MySQL中explain語句的使用MySqlAI
- MySQL explainMySqlAI
- [Mysql]ExplainMySqlAI
- Explain執行計劃詳解AI
- MySQL的Explain總結MySqlAI
- MySQL 中的事務詳解MySql
- MySQL 索引 +explainMySql索引AI
- MySQL中BETWEEN子句的用法詳解MySql
- 詳解MySQL中WHERE子句的用法MySql
- MySQL最佳化-explain:欄位,索引相同的多個資料庫為什麼他們的type,key,key_len會不一樣MySqlAI索引資料庫
- (4) MySQL中EXPLAIN執行計劃分析MySqlAI
- 淺析MySQL語句優化中的explain引數MySql優化AI
- mysql效能分析之explain的用法MySqlAI
- MySQL 的 EXPLAIN 語句及用法MySqlAI
- MySQL學習之explainMySqlAI
- Hive底層原理:explain執行計劃詳解HiveAI
- MySQL優化從執行計劃開始(explain超詳細)MySql優化AI
- mysql優化之explain 指令MySql優化AI
- mysql explain 執行計劃MySqlAI
- mysql執行計劃explainMySqlAI
- [MySql]explain用法及實踐MySqlAI
- MySQL中count(*)函式原理詳解MySql函式
- MySQL調優篇 | EXPLAIN執行計劃解讀(4)MySqlAI
- MySQL EXPLAIN命令的主要專案說明MySqlAI
- 用 Explain 命令分析 MySQL 的 SQL 執行AIMySql
- 一文學會MySQL的explain工具MySqlAI
- 詳解MySQL中的SQRT函式的使用方法MySql函式
- MYSQL的事務詳解MySql
- MySQL高階(3)-效能分析ExplainMySqlAI
- MySQL 查詢效能分析之 ExplainMySqlAI