key_len的計算方式
阿新 • • 發佈:2021-06-21
explain
我們可以通過explain關鍵字分析sql的執行計劃,從而可以檢查是否用到索引
當用的組合索引時,有可能只使用前半部分索引,此時key_len
的數值小於組合索引的大小
key_len的計算方式
- 如果這個欄位允許為空,多佔用1個位元組的額外空間,所以索引欄位最好不要為NULL,因為NULL讓統計更加複雜,並且需要額外的儲存空間。
- 不同編碼,佔用位元組數不一樣,例如utf8的varchar佔用3個位元組,utf8mb4的varchar佔用4個位元組
- 變長欄位需要額外的2個位元組(VARCHAR值儲存時只儲存需要的字元數,另加一個位元組來記錄長度(如果列宣告的長度超過255,則使用兩個位元組),所以VARCAHR索引長度計算時候要加2)
- 例如 varchar(255)
- 例如 varchar(255)
- 固定長度欄位(例如char(8))不需要額外的位元組。這個欄位在utf8mb4編碼下 佔用位元組數=84如果允許為null,則 佔用位元組數=84+1)
- 對於
account_id varchar(20),region varchar(3),PurchaseDate varchar(30)
這樣的組合索引 account_id, region, PurchaseDate,如果where條件跳過region,則只會使用到account_id索引,所以此時explain的結果中key_len的大小為20*4+2+1=83