亚洲国产第一_开心网五月色综合亚洲_日本一级特黄特色大片免费观看_久久久久久久久久免观看

Hello! 歡迎來到小浪云!


MySQL 中的 key_len 為什么會大于索引列的長度?


avatar
小浪云 2024-11-09 207

MySQL 中的 key_len 為什么會大于索引列的長度?

mysql:關(guān)于 key_len 計算方式的解析

問題描述:

在 MySQL 8.0.18 中,創(chuàng)建了一個表 student,其中包含一個 char(20) 的列 student_name,并建立了索引 student_name_index。向表中插入了三條數(shù)據(jù)。

通過使用 EXPLaiN 查看執(zhí)行計劃,發(fā)現(xiàn)最終使用的索引的 key_len 為 80。然而,表中只有三條記錄,key_len 應(yīng)該為20 * 3 = 60,為何出現(xiàn)這種情況?

答案解析:

char(20) 定義了一個定長字符類型,可以存儲長度不超過 20 個字節(jié)的字符串。而 utf8mb4 是一種編碼方式,它允許使用不同的字節(jié)數(shù)來表示不同的字符。對于 utf8mb4 編碼,一個字符最多可以占 4 個字節(jié)。

因此,對于 student_name 列,其長度為 20 個字符,但由于使用的是 utf8mb4 編碼,每個字符實際占用 4 個字節(jié),所以 key_len 實際上為 20 * 4 = 80。

與表中記錄的數(shù)量無關(guān),key_len 始終是索引列實際占用的字節(jié)數(shù)。

相關(guān)閱讀