首页 > 其他分享 >CHAR与VARCHAR如何选择

CHAR与VARCHAR如何选择

时间:2023-09-30 21:04:55浏览次数:22  
标签:选择 存储 VARCHAR 字节 CHAR 内存 长度


在CHAR和VARCHAR的选择上,这些情况下使用VARCHAR是合适的:

字符串列的最大长度比平均长度大很多,列的更新很少;使用了像UTF-8这样复杂的字符集,每个字符都使用不同的字节数进行存储。

CHAR适合存储很短的字符串,或者所有值定长或都接近同一个长度。例如,CHAR非常适合存储密码的MD5值,因为这是一个定长的值。对于经常变更的数据,CHAR也比VARCHAR更好,因为定长的CHAR类型不容易产生碎片。

对于非常短的列,CHAR比VARCHAR在存储空间上也更有效率。例如用CHAR( 1)来存储只有Y和N的值,如果采用单字节字符集只需要一个字节,但是VARCHAR(1)却需要两个字节,因为还有一个记录长度的额外字节。

另外,使用VARCHAR(5)和VARCHAR(200)存储'hello'在磁盘空间上开销是一样的。我们随便选择一个就好?应该使用更短的列,为什么?

事实证明有很大的优势。更长的列会消耗更多的内存,因为MySQL通常会分配固定大小的内存块来保存内部值。尤其是使用内存临时表进行排序或操作时会特别糟糕。在利用磁盘临时表进行排序时也同样糟糕。

所以最好的策略是只分配真正需要的空间。

标签:选择,存储,VARCHAR,字节,CHAR,内存,长度
From: https://blog.51cto.com/u_15856116/7664958

相关文章

  • 魅族云服务自动一键所有选择图片下载。
    魅族云服务的相册功能,没有一键选择所有的图片,就挺恶心的。魅族不一直提供云相册的服务了,就需要将图片全部下载。之前有大神写过油泼猴的脚本。今天拿来用,发现用不了。又在网上查一下了,有npm的开源下载工具。附上码云地址,没用过。https://gitee.com/moreant/mpcb但是部署起来太......
  • 2023-09-30:用go语言,给你一个整数数组 nums 和一个整数 k 。 nums 仅包含 0 和 1, 每一
    2023-09-30:用go语言,给你一个整数数组nums和一个整数k。nums仅包含0和1,每一次移动,你可以选择相邻两个数字并将它们交换。请你返回使nums中包含k个连续1的最少交换次数。输入:nums=[1,0,0,1,0,1],k=2。输出:1。来自左程云。答案2023-09-30:步骤描述:1.......
  • 下拉框选择与数据集参数的绑定
    步骤:1.制作数据集,并且在数据集的where条件后面添加上数据集参数。2.在报表设计器中添加控件:下拉框选择控件。3.给下拉框控件绑定参数(命名),绑定到数据集中where后面的参数中。4.选中下拉框选项。经过上面四步,发现在选择了下拉框选项中的参......
  • Charge Pump
    https://juejin.cn/post/7242717749906161720ChargePump倍压输出的工作原理ChargePump(电荷泵)最经典的应用莫过于倍压输出,其基本原理简而言之就是对电容进行充放电,利用电容能够储存电荷的原理将其从充电回路隔离,通过放电回路对输出进行放电。首先,充电阶段:Q1/Q4导通,Q2/Q3关......
  • Windows网络编程之事件选择模型(三)
    一、WSACreateEvent函数WSACreateEvent函数是Windows套接字API中的一部分,它用于创建套接字事件对象,以便在套接字操作上等待事件发生。这个函数通常与异步套接字操作一起使用,以允许应用程序异步地等待套接字事件的发生,而不需要阻塞线程。函数原型:WSAEVENTWSAAPIWSACreateEven......
  • 复习课12 选择语句与循环语句
    一.选择语句为了更好的讲解选择语句我们举一个例子:如果我们在学校认真学习则可以在考试时取得好的成绩,反之分数取得的成绩就会不理想,那么我们如何在程序中让用户选择是认真学习还是不认真学习,并返回相应的结果呢?以下是一段示例代码:#define_CRT_SECURE_NO_WARNINGS1#include<stdi......
  • JS的循环、判断,选择语句
    1、选择语句switch(条件){casea:caseb:casec:cased:default:}2、判断语句letflag=true;if(flag){document.write("这是真的");}else{document.write("这是假的")}3、JS的循环语句3.1、while循环while(循环条件){}3.2......
  • 【略施小计】Pycharm2022取消双击shift搜索框
    Pycharm取消双击shift搜索框基于PyCharm2022.3.2(ProfessionalEdition),旧版本修改方式自行搜索双击shift弹出搜索框,输入内容doublemodifier,单击对应项勾选上,意味着禁止双击修改快捷键shift-shift随处搜索失效ctrl-ctrl运行任何内容失效最后应用保存即可。......
  • 如何选择交叉导轨的品牌?
    交叉导轨是机械制造中的重要组成部分,用于引导和精确控制物体的运动。在市场中,有许多出色的交叉导轨制造商,以下是其中一些主要的品牌以及它们的特色:1、台湾上银:是一家著名的交叉导轨制造商,他们的产品以高精度和耐用性而闻名,在设计时考虑了各种应用场景,具有优秀的动态性能和静态性能......
  • 如何选择米尔基于STM32MP1系列核心板和开发板
    一款合适的处理器,是每个工程师在开发设计前期调研必须面对的难题。而如何挑选一款符合产品开发的处理器呢?今天我们就以ST公司的STM32MP1系列处理器进行分析比较。ST公司目前已经发布了两款不同类型的MPU芯片,分别是STM32MP15系列和STM32MP13系列。这两款芯片的特点十分鲜明:STM32MP......