谈谈Mysql数据库中VARCHAR和CHAR类型(InnoDB)

本文探讨了MySQL数据库中VARCHAR和CHAR类型的差异,重点在于InnoDB存储引擎。VARCHAR节省空间但可能导致行变长和页分裂,适合字符串长度差异大的情况;CHAR为定长,适合存储较短或长度固定的字符串。过度使用VARCHAR(255)可能导致不必要的内存开销,最佳实践是按需分配空间。
摘要由CSDN通过智能技术生成

VARCHAR和CHAR类型是两种主要的字符串类型.

今天这篇文章我们主要讨论一下VARCHAR和CHAR类型,这里我们以InnoDB做假设。

首先我们先来谈一谈VARCHAR

众所周知,VARCHAR是可变字符串类型。

什么是可变字符串类型呢?
也就是它仅使用必要的空间,也就是越短的字符串使用越少的空间
例如: VARCHAR(5)和VARCHAR(200) 存储 'hello’的空间开销是一样的。
VARCHAR节省了存储空间,所以对性能也是有帮助的!

这时候小伙伴们可能会想到: 芜湖!VARCHAR这么完美,以后就都用VARCHAR存字符串吧

别着急,您继续瞧。

VARCHAR虽然节省了空间,但是因为行是变长的,在UPDATE时可能使行变得比原来更长,这也就导致需要做额外的工作。
就是说,一个行的占用的空间增长,并且在页内已经没有更多的空间存储了,这种情况下InnoDB则需要分裂页使行可以放进页内。
(这里需要大家了解一下行和页的相关知识)

下边给大家推荐几种使用的情况

  • 字符串的最大长度比平均长度大很多
  • 列的更新很少,所以碎片不是问题

接下来就是CHAR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值