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

2023-11-03

一、区别

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来说是不需要的。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 解决:虚拟机重启后docker容器无法访问

    1 情况 vm宿主机无法访问容器 虚拟机curl localhost也无法访问 虚拟机centOS8 docker版本 Version 20 10 21 2 尝试 网上搜了一堆解决办法 首先排除端口映射问题 端口映射正常 然后检查内核版本和
  • HOOK startActivity

    往期推荐 HOOK框架 动态代理 HOOK框架 静态代理 实战案列分析 Crakeme01 实战 AliCrackme 需要相关资料的朋友 可以 加入此处即可打包获取 Hook的英文含义是钩子 你可以理解为用钩子把要Hook的对象勾过来 然

随机推荐

  • Error:(31, 39) java: 不兼容的类型: java.lang.String无法转换为int 的处理

    异常说明 使用增强for输出元素的时候 在元素名前面加了数组名称 发生原因 未严格按照增强for的语法写代码 改正方式 按each for的语法 不要在输出元素前面加数组名 改正前 改正后 转载于 https www cnblogs com
  • State:状态模式

    某个对象有一个标准接口 同时 该对象可能处于各种状态下 当该对象处于不同状态下时 客户调用标准接口 该对象会产生不同的响应 即允许一个对象在其内部状态改变时改变它的行为 使对象看起来似乎修改了它的类 这就是状态模式 例如 电灯开关这个对象提
  • Flutter

    在 decoration 里面设置 image 即可 Container width 100 height 100 alignment Alignment center child Text 有背景图 decoration BoxDecor
  • Python玩转微信 个性签名生成词云图

    本博客代码参照http www cnblogs com jiaoyu121 p 6944398 html 运行如下代码之前 将下图的wechat jpg放入F盘下 需安装itchat jieba matplotlib numpy和wordc
  • 03 什么是预训练(Transformer 前奏)

    博客配套视频链接 https space bilibili com 383551518 spm id from 333 1007 0 0 b 站直接看 配套 github 链接 https github com nickchen121 Pr
  • Fsm ps2

    The PS 2 mouse protocol sends messages that are three bytes long However within a continuous byte stream it s not obviou
  • SpringBoot整合MyBatis-Plus各种使用点超级详细

    简介 MyBatis Plus是一个Mybatis增强版工具 在MyBatis上扩充了其它功能没有改变基本功能 也就是只做封装增强不做改变 为了简化开发提交效率而存在 不需要写XML等sql语句就可实现 官方文档 https mp baom
  • Python全栈开发【基础-09】深浅拷贝+while循环

    专栏介绍 本专栏为Python全栈开发系列文章 技术包括Python基础 函数 文件 面向对象 网络编程 并发编程 MySQL数据库 HTML JavaScript CSS JQuery bootstrap WSGI Django Flas
  • xss跨站之waf绕过及安全修复(28)

    手工探针xss绕过waf规则 打开靶场 写入跨站测试语句发现拦截 这里就做一个最经典的方法 做一个关键字拆分来确立拦截的是什么东西 去掉最后字符串 访问还是拦截 再去掉alert 1 访问还是拦截 再去掉尖括号里面一个字符 留下scrtp在
  • Linux学习之旅-《Linux就该这么学》—— 第十六天

    DHCP 作用域 一个完整的IP地址段 DHCP协议根据作用域来管理网络的分布 分配IP地址及其他配置参数 超级作用域 用于管理处于同一个物理网络中的多个逻辑子网段 超级作用域中包含了可以统一管理的作用域列表 排除范围 把作用域中的某些IP
  • Devos勒索病毒的最新威胁:如何恢复您的数据?

    引言 在黑客与安全专家之间的无尽较量中 devos勒索病毒是一种异想天开的数字杀手 它以黑客们独具匠心的方式 病毒攻击着受害者的数据 挟持着宝贵信息 引发一场数据恢复的奇妙探险 本文91数据恢复将为你揭示 devos勒索病毒的不同寻常之处
  • 软测面试了一个00后,绝对能称为是内卷届的天花板

    前言 公司前段缺人 也面了不少测试 结果竟然没有一个合适的 一开始瞄准的就是中级的水准 也没指望来大牛 提供的薪资也不低 面试的人很多 但平均水平很让人失望 令我印象最深的是一个00后测试员 他技术基础方面确实还不错 面试也表现的非常自信
  • 有什么哪些便宜的云服务器推荐?

    竞争激烈的时代 优惠永远不会少 1元团购 1元打车 0元骑单车 1元吃外卖 1元游景区 1元XXX等等 正是由于激烈的竞争 我们才可以享受折扣力度如此大的活动 谁让这是互联网时代呢 得用户者才得天下 云计算时代 亦是如此 在新基建的引导下
  • 解决报错:@org.springframework.beans.factory.annotation.Autowired(required=true)

    先把问题贴出来 org springframework beans factory annotation Autowired required true 报这个错是因为 Autowired required true 当使用 Autowir
  • 利用Spring-MVC访问数据库

    1 创建相关的项目 首先相关路径 在pom xml中添加具有Spring mvc mysql dbcp的三个包 2 首先创建Admin类与数据库信息对应 2 1 数据库 2 2 jdbc properties 名称不可改变 user是数据库
  • Python读写CSV文件--追加方式多空行

    说明 文章首发于HURUWO的博客小站 本平台做同步备份发布 如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览 原文链接 Python读写CSV文件 追加方式多空行直接点击即可前往访问 更多技术文章访问本人博客HuRuWo的
  • 3dmax文件打不开了,怎么办

    3dmax文件 有时候原来操作还是好好的 下一次或者隔天再打开的时候 就会出现错误 无论怎么开 都开不了 这个该怎么办 其实这种情况 还真不好办 因为很多情况下 这种文件基本是损坏了 再打开会比较难了 造成这样的原因多种多样 有一种是病毒引
  • 用Vue.js开发一个电影App的前端界面

    我们要构建一个什么样的App 我们大多数人使用在线流媒体服务 如Netflix 观看我们最喜欢的电影或者节目 这篇文章将重点介绍如何通过使用vue js 2 建立一个类似风格的电影流媒体WEB交互界面 见上图 最终的产品可以去这里找 htt
  • 完美匹配-匈牙利算法(Hungarian method Edmonds)讲解

    目录 匈牙利算法 Hungarian method Edmonds 例题1 有完美匹配 例题2 无完美匹配 代码实现 变量及函数说明 测试数据1 测试结果1 测试数据2 测试结果 匈牙利算法 Hungarian method Edmonds
  • char和varchar的区别、区别的原因以及常用场景举例

    一 区别 1 最大长度 char最大长度是255字符 varchar最大长度是65535个字节 2 定长 char是定长的 不足的部分用隐藏空格填充 varchar是不定长的 3 空间使用 char会浪费空间 varchar会更加节省空间