MYSQL中 CHAR和VARCHAR的对比

众所周知(As far as we know.....)

VARCHAR 是变长数据类型 CHAR 是定长数据类型

不好意思 真不会写引子 我们直接开始吧

在MYSQL层的区别

最大长度:char是255,varchar是65535

尾部空格:char会将尾随空格去掉,而varchar不会。
因为存储时,char会用空格填充至指定长度,所以取出时需要去除空格。而且判断的时候,"a"和"a "

是一样的(会被去重)

储存时额外数据:varchar会占用额外的1~2字节来存储字符串长度。如果最大长度超过255,就需要2字节,否则1字节。(可以看一下这篇文章---一行数据是如何储存的)

存储行为:char和varchar都会存储字符串长度 对于CHAR(N)字段,如果实际存储数据小于N字节,会填充空格到N个字节。

性能对比:你看啊 如果我们定义CHAR(100) VARCHAR(100) 使用的时候如果没填满这个类型 就是只存储了 几十或者十几的 字符 CHAR就要用空格把它填成100字符大小的数据 而VARCHAR只用存储一字节的实际储存长度(这部分还是建议看一下这篇博客-传送链接) 也就是说 char填充空格可能导致浪费存储空间,进而导致性能下降。因为char多存储一些空格,意味着需要从磁盘读写更多的数据、耗费更多内存、查找数据时删除空格可能也会耗费一些CPU性能。

绝大部分情况都是VARCHAR比CHAR的性能更高的 但是有一种极端情况 我定义一列CHAR(18)

然后用它储存身份证号 也就是说频繁修改 也一直是18字符长度的 也就不会有空格填补 就不会有性能方面的浪费

Guess you like

Origin blog.csdn.net/chara9885/article/details/131567616