mysql中的字符串分为固定长度的char 或者varchar,可变长度的tinytext,text等,直接设置成可变长度的类型不是更省事,不用去估计可能的长度
mysql中的字符串分为固定长度的char 或者varchar,可变长度的tinytext,text等,直接设置成可变长度的类型不是更省事,不用去估计可能的长度
题目就有问题:
固定长度的char ,varchar是不固定的,只是根据你设置的长度做最大上限做限制。text也一样,只是比较大,一般达不到上限。
char ,varchar达不到很大的数据量级别以及数据响应时,基本是无差别的。char固定长度,但是这类设计很少了,比如IP.一般常用varchar能减少表结构变动带来的问题。text是特殊处理,不推荐用。
4 回答950 阅读✓ 已解决
8 回答1.1k 阅读
3 回答972 阅读✓ 已解决
2 回答1.6k 阅读
1 回答810 阅读✓ 已解决
2 回答989 阅读
1 回答603 阅读✓ 已解决
鉴于@papersnake君说了空间和效率上,我再啰嗦一下。
首先从字节上来说CHAR是定长,意思就是只要输入在我这个定长以下,不管是几个字符,它的实际占用空间都是CHAR定长的长度。而VARCHAR则相对来说会节省一点空间,比如:你VARCHAR的长度设为10,那么你只存储了两个字符长度,那么最终占用的空间也就是两个字符长度。
还有一点就是关于用途:VARCHAR虽然比CHAR节省空间,但是如果一个VARCHAR列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,这会造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR会更好一些。比如:存储用户密码,MD5或者serialize加密之后的长度为32或者16,密码字段的类型就可以设置为CHAR定长32或者16