数据库中的 varchar(255) 原因剖析
Posted braveln
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库中的 varchar(255) 原因剖析相关的知识,希望对你有一定的参考价值。
数据库中的 varchar(255)
mysql | ver < 4.1: VARCHAR以字节为单位存储,所以假设全部为常用汉字(UTF-8
3字节编码长度),则VARCHAR(255)共可存放约85个汉字;
MySQL | ver >= 4.1:
VARCHAR以字符为单位存储,假设输入仍然为常用汉字,则VARCHAR(255)可以存放255个汉字。
另外,据我所知,MySQL对UTF-8的支持也仅仅限于1~3字节编码长度(Unicode:0x0000~0xFFFF),可以满足大部分需求,但是生僻字就不行了。
那么VARCHAR的最大值是多少呢?
根据官方文档,VARCHAR 最多可以是 65535 字节(这也意味着一条记录只有这一个字段,因为 MySQL 一行只能包含 65535 字节)。
然而,无法为这么长的 VARCHAR 做索引,对于 MyISAM,可以对前 1000 个字节做索引,对于 InnoDB,则只有 767 字节。(来源依据)
在varchar长度接近256时,varchar长度设置成255的好处:
1、方便InnoDB建索引,对于 MyISAM,可以对前 1000 个字节做索引,对于 InnoDB,则只有 767 字节。(来源依据)。255X3=765
2、少申请一个字节,记录字符创长度,一个8位的tinyint,可以表示的无符号数值的范围是,0-255,如果长度超过了255,需要在申请个字节
以上是关于数据库中的 varchar(255) 原因剖析的主要内容,如果未能解决你的问题,请参考以下文章
如何更新 Nhibernate 中的 varchar 列长度?