MySql中varchar和varchar的区别

  1. 云栖社区>
  2. 博客>
  3. 正文

MySql中varchar和varchar的区别

吖随风而逝 2018-09-02 18:05:54 浏览4180
展开阅读全文

看了新公司的数据库设计,有些问题思考了一下,写这篇文章也就记录这个问题的思考过程。

首先从占用空间进行比较,varchar(10) 声明10个字节,数据保存时额外一个字节的长度前缀;varchar(1000)声明1000个字节,如果数据长度大于255,长度前缀是两个字节。而实际Varchar数据类型是根据实际的需要来分配长度的。有问题的参考这篇文章,挺有意思的一个实验,关于varchar的思考。

那么,既然主要关心磁盘占用没有问题,哪里可能出现问题

y6r5ep3gwy.jpeg
dh21hnmfxo.jpeg

意思就是说对于VARCHAR数据类型来说,硬盘上的存储空间虽然都是根据实际字符长度来分配存储空间的,但是对于内存来说,则不是。其时使用固定大小的内存块来保存值。简单的说,就是使用字符类型中定义的长度,即1000个字符空间,因为其会转换成CHAR。显然,这对于排序或者临时表(这些内容都需要通过内存来实现)作业会产生比较大的不利影响。解释可以参见这里。

(https://stackoverflow.com/questions/1151667/what-are-the-optimum-varchar-sizes-for-mysql)。

所以我们在做库表设计的时候,一些大字段参数进行业务拆表,还有就是数据库设计时候varchar(n)这个字段要合理,不能太大。

这边再贴一下这个过程中发现的一篇有趣的帖子,是关于char和varchar的

http://tech.it168.com/a2011/0426/1183/000001183173.shtmlmysql存储代码类型

网友评论

作者关闭了评论
吖随风而逝
+ 关注