mysql索引长度是如何进行计算的?
我试了一下,char(n)在utf8-mb4下,索引长度key_len是4n+1
varchar(n)是4n+2,这个+1以及+2是什么意思呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我试了一下,char(n)在utf8-mb4下,索引长度key_len是4n+1
varchar(n)是4n+2,这个+1以及+2是什么意思呢?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
不一定都是乘 4,n 乘多少是跟字符集有关的。乘 4 一般是 utf8mb4。
也不是 char 就 +1、varchar 就 +2,还要看该列是否可为空。
对于可空列:char 要 +1,用额外的一个字节存储值是否为空;varchar 要 +3,除了用一个字节存储值是否为空外,还要用两个字节存储实际的长度。
对于非空列:char 什么都不加;varchar 要 +2,存实际长度。