谈谈Mysql数据库中VARCHAR和CHAR类型(InnoDB)
2021/9/29 2:10:59
本文主要是介绍谈谈Mysql数据库中VARCHAR和CHAR类型(InnoDB),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
VARCHAR和CHAR类型是两种主要的字符串类型.
今天这篇文章我们主要讨论一下VARCHAR和CHAR类型,这里我们以InnoDB做假设。
首先我们先来谈一谈VARCHAR
众所周知,VARCHAR是可变字符串类型。
什么是可变字符串类型呢?
也就是它仅使用必要的空间,也就是越短的字符串使用越少的空间
例如: VARCHAR(5)和VARCHAR(200) 存储 'hello’的空间开销是一样的。
VARCHAR节省了存储空间,所以对性能也是有帮助的!
这时候小伙伴们可能会想到: 芜湖!VARCHAR这么完美,以后就都用VARCHAR存字符串吧
别着急,您继续瞧。
VARCHAR虽然节省了空间,但是因为行是变长的,在UPDATE时可能使行变得比原来更长,这也就导致需要做额外的工作。
就是说,一个行的占用的空间增长,并且在页内已经没有更多的空间存储了,这种情况下InnoDB则需要分裂页使行可以放进页内。
(这里需要大家了解一下行和页的相关知识)
下边给大家推荐几种使用的情况
- 字符串的最大长度比平均长度大很多
- 列的更新很少,所以碎片不是问题
接下来就是CHAR
CHAR类型我们都知道,它是定长的
Mysql会根据定义的字符串长度分配足够的空间
- 适合用来存储较短的字符串
- 或者长度比较固定的字符串(比如密码的MD5值)
关于CHAR似乎没有什么好说的内容。。(以后再补充吧)
最后我们来看一下
朋友们心里可能有个大大的问号
既然VARCHAR(5)和VARCHAR(200) 存储 'hello’的空间开销是一样的。
那以后我们直接VARCHAR(255)不就好了吗?
NONONO
一般来说MYSQL通常会分配固定大小的内存快来保存内布值。
尤其是使用内存临时表进行排序或者操作的时候会变得特别糟糕
在利用磁盘临时表进行排序的时候也特别糟糕
所以,各位,最好的策略还是只分配真正需要的空间
这篇关于谈谈Mysql数据库中VARCHAR和CHAR类型(InnoDB)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南