Mysql 的char 和varchar的的区别

1、char 和varchar 区别

下面以utf8字符集为例,char和varchar的占比计算,如下图
valueChar(5)bytesVarchar(5)bytesVarchar(100)bytes
‘’‘   ’15‘’1‘’1
‘abcd’‘abcd ’15‘abcd’13‘abcd’13
'abcde''abcde'15'abcde'16'abcde'16

        varchar使用额外的1到2字节来存储值得长度。如果列的最大长度小于或等于255,则使用1字节,否则使用2字节。以utf8字符集举例,即一个字符占用3个字节,N理论上能取到的值是(65535-2)/3=21844 。char(1)字符串对于单字节字符来说只会占用1个字节,但是varchar(1)会占用2个字节,其中1个字节用来存储长度信息。

     使用varchar(5)和varchar(100)保存‘abcde’占用的空间虽然都一样,但越大的
列会使用越多的内存,因为MySQL通常会分配固定大小的内存块来保存值。简单的
说,就是使用字符类型中定义的长度,即100个字符空间。所以如果你的MySQL内存
占用过高也有可能是因为返个原因,如基亍排序、使用基亍内存的临时表等等,磁盘
I/O也会激增。所以在使用varchar的时候一定要分配刚好就行。

     从碎片角度迕行考虑,使用CHAR字符型时,由亍存储空间都是一次性分配的。为此
某个字段的内容,其都是存储在一起的。单从返个角度来讲,其丌存在碎片的困扰。
而可变长度的字符数据类型,其存储的长度是可变的。当其更改前后数据长度丌一致
时,就丌可避免的会出现碎片的问题。故使用可变长度的字符型数据时,时丌时的对
碎片迕行整理。如执行数据库导出导入作业,来消除碎片。

2、怎么选择char 还是varchar

  char最佳的使用方案就是 存储很短的字符串戒者长度近似相同的字符串的时候非常有用。如固定长度的MD5、 定长值、短网址,存储用户的身份证号码、性别等等。其他的场景建议用varchar

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/3115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【PHP快速上手(十四)】

目录 PHP快速上手(十四)PHP 中常用数据库操作使用 WHERE 子句进行条件查询使用 ORDER BY 子句进行排序使用 UPDATE 语句更新数据使用 DELETE 语句删除数据执行事务总结 PHP快速上手(十四) PHP 中常用数据库操作 当使用 PHP 中的…

NumPy 1.26 中文文档翻译完成

NumPy 1.26 中文文档NumPy 用户指南开始入门什么是 NumPy?NumPy 快速开始NumPy: 绝对初学者的基础知识基础与用法NumPy 基础知识MATLAB 用户的 NumPyNumPy 特性NumPy 如何操作高级用法和互操作性从源码编译使用 NumPy C-APIF2PY 用户指南和参考手册开发人员的底层文…

kubernetes中的静态POD

我们都知道,pod是kubelet创建的,那么创建的流程是什么呐? 此时我们需要了解k8s中config.yaml配置文件了: 他的存放路径: 【/var/lib/kubelet/config.yaml】 一、查看静态pod的路径 [K8Sk8s-master ~]$ sudo cat /va…

前端中的promise.all()的使用

理解和使用Promise.all和Promise.race 一、promise.all的使用 说明 Promise.all 可以将多个Promise实例包装成一个新的Promise实例,等待所有都完成(或第一个失败)返回值 成功的时候返回的是一个数组,失败的时候则返回先被…

Linux驱动开发——(五)内核中断

目录 一、内核中断简介 1.1 中断号 1.2 中断API函数 1.2.1 irq_of_parse_and_map函数 1.2.2 gpio_to_irq函数 1.2.3 request_irq函数 1.2.4 free_irq函数 1.2.5 中断处理函数 1.2.6 中断使能与禁止函数 二、上半部(顶半部)与下半部&#xff08…

代码托管基础操作

在待上传代码文件夹中右键,打开Git Bash Here依次输入以下命令: git init(在本地初始化一个代码仓库,具体表现为会在你的文件夹里出现一个隐藏的.git文件夹) git add .(先把代码放到本地的一个缓冲区)添加当前目录下的…

【C++】从零开始认识泛型编程 — 模版

送给大家一句话: 尽管眼下十分艰难,可日后这段经历说不定就会开花结果。总有一天我们都会成为别人的回忆,所以尽力让它美好吧。 – 岩井俊二 \\\ ⱶ˝୧(๑ ⁼̴̀ᐜ⁼̴́๑)૭兯 //// &#…

六、Java+FFmpeg,实战直播推流

目录 类 JavaFFmepegTest run() 方法 openFFmpegExe() 方法 main() 方法 总结 import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io

Unity 时间格式 12小时制与24小时制

using System; using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UniRx; public class DisplayTime : MonoBehaviour { //时间文本显示 [SerializeField] private TextMeshProUGUI _time; private int _timeType 0; enu…

AI大模型探索之路-训练篇3:大语言模型全景解读

文章目录 前言一、语言模型发展历程1. 第一阶段:统计语言模型(Statistical Language Model, SLM)2. 第二阶段:神经语言模型(Neural Language Model, NLM)3. 第三阶段:预训练语言模型&#xff08…

Ali-Sentinel-节点与度量

归档 GitHub: Ali-Sentinel-节点与度量 作用 保存资源的实时统计信息 节点 节点-类结构 com.alibaba.csp.sentinel.slots.statistic.metric.DebugSupport /** 调试支持 */ public interface DebugSupport {void debug(); // 打印统计信息 }com.alibaba.csp.sentinel.n…

Python基础知识(二)

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》 《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 1.输入和输出函数1.1输出函数1.2输入函数 2.常见运算符2.1赋值运算符2.2比较运算符2.3逻辑运算符2.4and逻辑与2.5or逻辑或2.6not逻…

nvidia-smi详解

nvidia-smi:控制你的 GPU 大多数用户都知道如何检查他们的 CPU 的状态,查看有多少系统内存可用,或者找出有多少磁盘空间可用。相比之下,从历史上看,密切关注 GPU 的运行状况和状态一直比较困难。如果您不知道去哪里寻…

c++二叉树的进阶--二叉搜索树

1. 二叉搜索树的概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 它的左…

Swift-27-类的初始化与销毁

Swift的初始化是一个有大量规则的固定过程。初始化是设置类型实例的操作,包括给每个存储属性初始值,以及一些其他准备工作。完成这个过程后,实例就可以使用了。 简单来讲就是类的构造函数,基本语法如下: 注意&#xff…

C语言扫雷游戏完整实现(上)

文章目录 前言一、新建好头文件和源文件二、实现游戏菜单选择功能三、定义游戏函数四、初始化棋盘五、 打印棋盘函数六、布置雷函数七、玩家排雷菜单八、标记功能的菜单九、标记功能菜单的实现总结 前言 C语言从新建文件到游戏菜单,游戏函数,初始化棋盘…

JavaScript-4.正则表达式、BOM

正则表达式 正则表达式包含在"/","/"中 开始与结束 ^ 字符串的开始 $ 字符串的结束 例: "^The":表示所有以"The"开始的字符串("There"、"The cat"等&#x…

数据结构(八)——排序

八、排序 8.1 排序的基本概念 排序(Sort),就是重新排列表中的元素,使表少的元素满足按关键字有序的过程。 输入∶n个记录R1,R2...., Rn,对应的关键字为k1, k2,... , kn 输出:输入序列的一个重排R1,R2....,Rn,使得有k1≤k2≤...≤…

综合大实验

题目: 1、R4为ISP,其上只配置IP地址;R4与其他所直连设备间均使用公有IP; 2、R3-R5、R6、R7为MGRE环境,R3为中心站点; 3、整个OSPF环境IP基于172.16.0.0/16划分;除了R12有两个环回,其…

VUE父组件向子组件传递值

创作灵感 最近在写一个项目时,遇到了这样的一个需求。我封装了一个组件,这个组件需要被以下两个地方使用,一个是搜索用户时用到,一个是修改用户信息时需要用到。其中,在搜索用户时,可以根据姓名或者账号进…