mysql的char和varchar
mysql提供了char和varcha两种存储短字符串的类型,我是在看了文档之后才知道这里面花花肠子很多的,把要点记录在案(好记性不如烂笔头啊):
char用于定长字符串,在建表时指定长度,在存储时自然也是定长,但我们可以向char里面存储不超过长度限制的字符串,不够长时会自动补空格(在后面补,前面不补),查询时mysql会将后面的所有空格去掉,char的长度限制为255以下。
varchar用于变长字符串,也在建表时指定长度,在存储时是变长(使用长度+字符串),因此可以节省存储空间,varchar的特性在不同mysql版本间差异较大, 5.0.0.3之前的版本也会在查询时截去后面的空格,但>=5.0.0.3版本之后不会了(同时在存储时也保留了后面的空格),5.0.0.3版本之前有255的最长限制,但5.0.0.3之后取消了这个限制,长度只受限于记录长度(65535),如果一条记录有多个varchar,大家就需要分享这个65535了。
由于mysql支持多种字符集,所以长度的定义就有些岐义,我试了一下,长度是按字节来的,也就是说一个中文字符可能会占据多个字节。
两种字符串类型的选择也挺有意思,显然char类型的性能应该好一些,但varchar可以降低数据库大小,而这对大型数据库的性能很关键,所以一般来说,都应该使用VARCHAR,除非:
1)你的字段确实是定长的(比如MAC地址),当然应该使用char。
2)你的数据库很小,你不在乎空间的浪费,而希望改进性能,可以考虑用char。
官方的参考文档:
http://dev.mysql.com/doc/refman/5.0/en/char.html
char用于定长字符串,在建表时指定长度,在存储时自然也是定长,但我们可以向char里面存储不超过长度限制的字符串,不够长时会自动补空格(在后面补,前面不补),查询时mysql会将后面的所有空格去掉,char的长度限制为255以下。
varchar用于变长字符串,也在建表时指定长度,在存储时是变长(使用长度+字符串),因此可以节省存储空间,varchar的特性在不同mysql版本间差异较大, 5.0.0.3之前的版本也会在查询时截去后面的空格,但>=5.0.0.3版本之后不会了(同时在存储时也保留了后面的空格),5.0.0.3版本之前有255的最长限制,但5.0.0.3之后取消了这个限制,长度只受限于记录长度(65535),如果一条记录有多个varchar,大家就需要分享这个65535了。
由于mysql支持多种字符集,所以长度的定义就有些岐义,我试了一下,长度是按字节来的,也就是说一个中文字符可能会占据多个字节。
两种字符串类型的选择也挺有意思,显然char类型的性能应该好一些,但varchar可以降低数据库大小,而这对大型数据库的性能很关键,所以一般来说,都应该使用VARCHAR,除非:
1)你的字段确实是定长的(比如MAC地址),当然应该使用char。
2)你的数据库很小,你不在乎空间的浪费,而希望改进性能,可以考虑用char。
官方的参考文档:
http://dev.mysql.com/doc/refman/5.0/en/char.html

0 Comments:
发表评论
<< Home