MySQL中char、varchar和text三者的区别是什么

52次阅读
没有评论

共计 1049 个字符,预计需要花费 3 分钟才能阅读完成。

自动写代码机器人,免费开通

今天就跟大家聊聊有关 MySQL 中 char、varchar 和 text 三者的区别是什么,可能很多人都不太了解,为了让大家更加了解,丸趣 TV 小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

具体说明:

char:存储定长数据很方便,CHAR 字段上的索引效率级高,必须在括号里定义长度,可以有默认值,比如定义 char(10),那么不论你存储的数据是否达到了 10 个字节,都要占去 10 个字节的空间(自动用空格填充),且在检索的时候后面的空格会隐藏掉,所以检索出来的数据需要记得用什么 trim 之类的函数去过滤空格。

varchar:存储变长数据,但存储效率没有 CHAR 高,必须在括号里定义长度,可以有默认值。保存数据的时候,不进行空格自动填充,而且如果数据存在空格时,当值保存和检索时尾部的空格仍会保留。另外,varchar 类型的实际长度是它的值的实际长度 +1,这一个字节用于保存实际使用了多大的长度。

text:存储可变长度的非 Unicode 数据,最大长度为 2^31- 1 个字符。text 列不能有默认值,存储或检索过程中,不存在大小写转换,后面如果指定长度,不会报错误,但是这个长度是不起作用的,意思就是你插入数据的时候,超过你指定的长度还是可以正常插入。

关于存储空间:

在使用 UTF8 字符集的时候,MySQL 手册上是这样描述的:

基本拉丁字母、数字和标点符号使用一个字节;

大多数的欧洲和中东手写字母适合两个字节序列:扩展的拉丁字母(包括发音符号、长音符号、重音符号、低音符号和其它音符)、西里尔字母、希腊语、亚美尼亚语、希伯来语、阿拉伯语、叙利亚语和其它语言;

韩语、中文和日本象形文字使用三个字节序列。

结论:

1、经常变化的字段用 varchar;

2、知道固定长度的用 char;

3、超过 255 字节的只能用 varchar 或者 text;

4、能用 varchar 的地方不用 text;

5、能够用数字类型的字段尽量选择数字类型而不用字符串类型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接回逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了;

6、同一张表出现多个大字段,能合并时尽量合并,不能合并时考虑分表,原因请考 优化 InnoDB 表 BLOB,TEXT 列的存储效率

看完上述内容,你们对 MySQL 中 char、varchar 和 text 三者的区别是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注丸趣 TV 行业资讯频道,感谢大家的支持。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1049字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)