explain 中ken_len作用
explain 中key_len的作用
key_len越小 索引效果越好!
key_len的長度是如何計算的?
name的字段類型是varchar(20),字符編碼是utf8,一個字符占用3個字節,那么key_len應該是 20*3=60。
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的長度是8bytes
int key_len長度是4 ,typeint的長度是1
smallint 長度是2 middleint長度是3
在這里 key_len 大小的計算規則是:
a、一般地,key_len 等于索引列類型字節長度,例如int類型為4-bytes,bigint為8 bytes;
b、如果是字符串類型,還需要同時考慮字符集因素,例如:CHAR(30) UTF8則key_len至少是90 bytes;
c、若該列類型定義時允許NULL,其key_len還需要再加 1 bytes;
d、若該列類型為變長類型,例如 VARCHAR(TEXT\BLOB不允許整列創建索引,如果創建部分索引,也被視為動態列類型),其key_len還需要再加 2 bytes
舉例說明
例如,有個聯合索引 idx1(c1, c2, c3),3個列均是INT NOT NULL,那么下面的這個SQL執行計劃中,key_len的值是8而不是12:
SELECT…WHERE c1=? AND c2=? ORDER BY c1;
這句話的意思是: 沒有使用完全索引
通過這個案例,就可以知道 有沒有完全使用索引。
總結
以上是生活随笔為你收集整理的explain 中ken_len作用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 显示器的 VGA、HDMI、DVI 和D
- 下一篇: 读《双螺旋》