使用mysql的explain時,ken_len表示索引使用的字節數,根據這個值,就能夠判斷索引使用狀況,特別是在組合索引的時候,判斷全部的索引字段是否都被查詢用到。html
Mysql 5.6.19-logmysql
1. 數據類型自己佔字節長度sql
int(11) 4 tinyint(4) 1 timestamp 4 datetime 8
2. 索引字段的附加信息ide
定長類型:char\int\datetime等,須要有是否爲空的標記,佔用1個字節。若是字段定義爲非空(not null)時,不佔用字節。 變長類型:varchar等,須要是否爲空的標記和長度信息,共佔用2個字節。
3. 字符集編碼
gbk編碼爲:1個字符2個字節 utf8編碼爲:1個字符3個字節 utf8mb4編碼爲:1個字符4個字節
output: | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+----------+-------+-----------------+-----------------+---------+------+-------+----------------------------------------------------+ | 1 | SIMPLE | tv_video | range | idx_media_audit | idx_media_audit | 167 | NULL | 18127 | Using index condition; Using where; Using filesort | KEY `idx_media_audit` (`source_type`,`ol_status`,`op_user`,`updated_at`,`created_at`) USING BTREE 計算字節長度: int(11) 4 [+1 not null] tinyint(4) 1 [+1 not null] varchar(40) 40 * 4 +2 timestamp() 4 [+1 not null] timestamp() 4 [+1 not null] key_len 167 = 4 + 1 + 160 + 2 = 167 結論:用索引只用到了前3個字段