标题,名称字段通常需要用查询,需建立索引,用户也可能输入较长的内容,数据库字段做的太长也不合适。不同的存储引擎,字符集编码,不同MySQL版本的索引长度限制,决定了这个这个字段的长度有不同的极限,如何设计一个最具兼容性的长度?
目前 innodb 基本普及成通用的了
区别就是 utf8 有些字符存不进去,如 emoj 表情。为了使你开发的应用瘘容性更好,建议 utf8mb4,,MySQL 8.0 中,utf8mb4 被设置为默认字符集
MySQL中的 varchar 的长度表示的是字符数,它占用的空间是变长的。
如 varchar(60), 可以存放最多 60 个英文字符,存放汉字也是 60 个。
innodb 最大索引长度 767 字节,假定全部存放汉字
第多历史文章中经常见到 avarchar 设置最大 255 长度,就是这个原因,但它是不适合 utf8mb4 的。
innodb 最大索引长度 3072 字节,假定全部存放汉字
这个长度够我们随心所欲的使用了。
如果开发的程序有可能部署到 MySQL 5.6,使用 utf8mb4 字符集,瘘容性最好的设计是最大 191,取个最接近,方便记忆又吉利的数字就是: 180
综上,在目前 MySQL 5.6 仍有不小市场占有率的情况下,名称,标题字段瘘容性最好的长度就是:
当然,如果能够预见用户不需要输入较长的字符, 那么,数据表设计中也应该尺可能短一些,如:最多输入不超过 60 个汉字或英文:那就 varchar(60)。