一、区别

1、最大长度:

char最大长度是255字符,varchar最大长度是65535个字节。

2、定长:

char是定长的,不足的部分用隐藏空格填充,varchar是不定长的。

3、空间使用:

char会浪费空间,varchar会更加节省空间。

4、查找效率:

char查找效率会很高,varchar查找效率会更低。

5、尾部空格:

char插入时可省略,vaechar插入时不会省略,查找时省略。

二、char比varchar效率更快的原因

这是由他们在磁盘上存放的不同形式决定的,我们先来看一个图:


我们可以看到char类型在存放数据的时候,中间是没有间隔的,数据本身是有空格的,但是数据段之间没有间隔,因为我们在创建列的时候已经告诉MySQL列的长度了,MySQL在查询数据的时候,只需要按部就班寻找就行了,不需要在中途计算这个数据段的长度。
但是varchar类型的存放就不同了,在每个数据段开头,都要有一段空间(1~2个字节)存放数据段的长度,在数据段的结尾还有一段空间(1个字节)标记此字段的节数。MySQL在读取一个数据段的时候,首先要读开头,比如读到了3,说明数据段的长度是3,之后就不多不少,只读3个字节。所以MySQL在遍历数据的时候,磁针要比char类型的列多读很多次磁盘来获取字段的真实长度,这就是为什么varchar比char查询效率低的原因了。

三、常用场景

一,存储很短的信息,比如门牌号码101,201……这样很短的信息应该用char,因为varchar还要占1个byte用于存储信息长度,本来打算节约存储的现在得不偿失。

二,固定长度的。比如使用uuid作为主键,那用char应该更合适。因为他固定长度,varchar动态根据长度的特性就消失了,而且还要占1个长度信息。

三,十分频繁改变的column。因为varchar每次存储都要有额外的计算,得到长度等工作,如果一个非常频繁改变的,那就要有很多的精7a64e4b893e5b19e31333363383937力用于计算,而这些对于char来说是不需要的。

char和varchar的区别、区别的原因以及常用场景举例相关推荐

  1. mysql in varchar_MySQL中char和varchar有啥区别?优缺点是啥?

    在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定的长度,而varchar属于可变长的字符类型. char与varchar的区别 c ...

  2. 数据库中char与varchar类型的区别 1

    在建立数据库表结构的时候,为了给一个String类型的数据定义一个数据库的数据库类型,一般参考的都是char或者varchar,这两种选择有时候让人很纠结,今天想总结一下它们两者的区别,明确一下两者的 ...

  3. 数据库设计中char与varchar类型的区别

    在数据库建表过程中,其中给String类型的数据选择数据库类型时,一般参考的都是char或者varchar,这两种选择有时候让人很纠结,那么这里给出两种类型的区别: char的长度是不可变的,而var ...

  4. char、varchar、varchar2区别

    区别: 1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串"abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符), ...

  5. MySQL中VARCHAR最大长度是多少?CHAR和VARCHAR有哪些区别?

    以我多年经验来看,VARCHAR的最大长度.字符串类型选择,用MySQL的人中十之七八是不清楚的. 本文不止介绍了原理,还提供了案例手把手教你自己分析,彻底解决你的疑惑. 假设有个VARCHAR(64 ...

  6. 【256期】MySQL 中 varchar 最大长度?char 和 varchar 有什么区别?

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每一天进步一点点,是成功的开始... 以我多年经 ...

  7. char和varchar有哪些区别?varchar最大长度是多少?

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 每天 14:00 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java ...

  8. nchar,char,varchar与nvarchar区别(收藏)

    最近在公司里做项目,遇到一个问题,建的数据库里的中文字符和音标显示为乱码,组里的人所有字符都用varchar表示,所以出现上诉问题,当改为Nvarchar后,问题得到解决.所以有必要把他们的区别再重新 ...

  9. nchar,char,varchar与nvarchar区别

    最近在公司里做项目,遇到一个问题,建的数据库里的中文字符和音标显示为乱码,组里的人所有字符都用varchar表示,所以出现上诉问题,当改为Nvarchar后,问题得到解决.所以有必要把他们的区别再重新 ...

最新文章

  1. 中山市交通集团热备容灾项目成功案例
  2. python面试-马哥教育官网-专业Linux培训班,Python培训机构
  3. 【Android 应用开发】Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介
  4. SpringCloud熔断器介绍
  5. 【渝粤教育】国家开放大学2018年春季 0579-22T电路及磁路(2)(一) 参考试题
  6. linux下udp多线程编程
  7. 控制反转(IOC)入门
  8. leancloud 怎么绑定域名_云引擎支持绑定加速域名 | LeanCloud 八月变化
  9. 存储珍贵的数据和资源的好选择,铁威马NAS F2-221折腾体验
  10. Katana中设置全局变量
  11. windows和linux系统云服务器桌面远程连接教程
  12. win32下的OpenGL绘图环境框架
  13. php处理微信weui图片上传
  14. 九键字母组合-深度优先遍历DFS
  15. Win10电脑开机后黑屏只有鼠标怎么办?
  16. 解析微分电路和积分电路的区别
  17. 基于cnn-lstm的交通流量预测
  18. vue2和vue3区别
  19. 短信生成器部分思路----Android
  20. Python数据可视化——pyecharts学习笔记

热门文章

  1. 1.在屏幕上输出以下图案:* *** ***** ******* *********
  2. 机器学习十大算法汇总
  3. 失物招领系统的设计与实现
  4. 從C:\Windows\assembly中拷出dll文件
  5. 专家称楼市细分市场出现机会 “以价换量”成趋势
  6. c++ for_each 用法
  7. 【Windows 7 Wifi 热点】无法启动承载网络 连到系统上的设备没有发挥作用
  8. libpcap捕获数据包
  9. 大家都缺钱?推荐一个技术人的冷门又逆天的副业(Python兼职月入10k+)
  10. python 语音播报库_Python爬取天气信息并语音播报