mysql索引长度是如何进行计算的?

我试了一下,char(n)在utf8-mb4下,索引长度key_len是4n+1
varchar(n)是4n+2,这个+1以及+2是什么意思呢?

阅读 3.8k
1 个回答

不一定都是乘 4,n 乘多少是跟字符集有关的。乘 4 一般是 utf8mb4。

也不是 char 就 +1、varchar 就 +2,还要看该列是否可为空。

对于可空列:char 要 +1,用额外的一个字节存储值是否为空;varchar 要 +3,除了用一个字节存储值是否为空外,还要用两个字节存储实际的长度。

对于非空列:char 什么都不加;varchar 要 +2,存实际长度。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏