mysql设置varchar_MySql中varchar长度的设置问题

根据自己多年的工作经验,特别是在接收旧的项目时,varcahr的长度设置有不同的风格,针对varchar长度的设置问题,自己划分了不同的门派。

1.强迫症派:长度设置为4或者8的倍数,达到内存对齐的目的;

2.贴心派:长度设置成(2^n)-1;

3.务实派:需要多长就设置多长,不关心2的几次幂;

4.逍遥派:varchar是存储可变长字符串的,n值尽可能设置的大,比如varchar(1000)。

下面分析那种方案更合理:

1.varchar(n)的最大值字符数是多少

varchar的最大可以保存65535字节,但是具体保存多少个字符,不同的编码不一样。

MySql 5.0 之前的版本: n指的是n个字节

n的最大值是65535,如果存放utf-8格式只能保存 (n / 3)个汉字,即如果varchar(20) 那么只能保存6个汉字;

MySql 5.0 之后的版本: n指的是n个字符

如果存放utf-8格式,那么无论是数字,字母还是汉字,都可存放n个,即如果varchar(20) 那么可以保存20个汉字(自己亲测可以);

gbk类型:varchar(n)中每个字符最多占2个字节,最大长度不能超过(65535 / 2);

utf-8类型:varchar(n)中每个字符最多占3个字节,最大长度不能超过(65535 / 3)。

2.varchar(n)需要1到2个额外字节记录长度n的值

当n<=255的时候,只需要1个字节记录

你可能感兴趣的:(mysql设置varchar)