VARCHAR和CHAR类型是两种主要的字符串类型.
今天这篇文章我们主要讨论一下VARCHAR和CHAR类型,这里我们以InnoDB做假设。
首先我们先来谈一谈VARCHAR
众所周知,VARCHAR是可变字符串类型。
什么是可变字符串类型呢?
也就是它仅使用必要的空间,也就是越短的字符串使用越少的空间
例如: VARCHAR(5)和VARCHAR(200) 存储 'hello’的空间开销是一样的。
VARCHAR节省了存储空间,所以对性能也是有帮助的!
这时候小伙伴们可能会想到: 芜湖!VARCHAR这么完美,以后就都用VARCHAR存字符串吧
别着急,您继续瞧。
VARCHAR虽然节省了空间,但是因为行是变长的,在UPDATE时可能使行变得比原来更长,这也就导致需要做额外的工作。
就是说,一个行的占用的空间增长,并且在页内已经没有更多的空间存储了,这种情况下InnoDB则需要分裂页使行可以放进页内。
(这里需要大家了解一下行和页的相关知识)
下边给大家推荐几种使用的情况
- 字符串的最大长度比平均长度大很多
- 列的更新很少,所以碎片不是问题
接下来就是CHAR