MySQL 中 商品名称,文章标题 nvarchar 长度设置多长合适?

作者: 刘一二 发布时间: 2023年5月6日 浏览: 609

标题,名称字段通常需要用查询,需建立索引,用户也可能输入较长的内容,数据库字段做的太长也不合适。不同的存储引擎,字符集编码,不同MySQL版本的索引长度限制,决定了这个这个字段的长度有不同的极限,如何设计一个最具兼容性的长度?

 

存储引擎

目前 innodb 基本普及成通用的了

 

常用字符集编码

  • utf8 编码,一个字符占用3个字节
  • utf8mb4 编码,一个字符占用4个字节

区别就是 utf8 有些字符存不进去,如 emoj 表情。为了使你开发的应用瘘容性更好,建议 utf8mb4,,MySQL 8.0 中,utf8mb4 被设置为默认字符集

 

varchar

MySQL中的 varchar 的长度表示的是字符数,它占用的空间是变长的。
如 varchar(60), 可以存放最多 60 个英文字符,存放汉字也是 60 个。

  • utf8 编码时: 英文占用 1 个字节,汉字占用 3 个字节
  • utf8mb4 编码时: 英文占用 1 个字节,汉字占用 4 个字节

 

MySQL 5.6

innodb 最大索引长度 767 字节,假定全部存放汉字

  • utf8 编码时,varchar 字段最大长度 767 / 3  = 255.66
  • utf8mb4 编码时,varchar 字段最大长度 767 / 4  = 191.75

第多历史文章中经常见到 avarchar 设置最大 255 长度,就是这个原因,但它是不适合 utf8mb4 的。 

 

MySQL 5.7 & 8.0

innodb  最大索引长度 3072 字节,假定全部存放汉字

  • utf8 编码时,varchar 字段最大长度 3072 / 3  = 1024
  • utf8mb4 编码时,varchar 字段最大长度 3072 / 4  = 768

这个长度够我们随心所欲的使用了。

 

如果开发的程序有可能部署到 MySQL 5.6,使用 utf8mb4 字符集,瘘容性最好的设计是最大 191,取个最接近,方便记忆又吉利的数字就是: 180

 

综上,在目前 MySQL 5.6 仍有不小市场占有率的情况下,名称,标题字段瘘容性最好的长度就是:

varchar ( 180 )

 

当然,如果能够预见用户不需要输入较长的字符, 那么,数据表设计中也应该尺可能短一些,如:最多输入不超过 60 个汉字或英文:那就 varchar(60)。

 

最新文章
热门文章
热门搜索
猜你喜欢
导航