mysql的char和varchar_MySQL中CHAR和VARCHAR的区别及应用场景
VARCHAR和CHAR是两种最主要的字符串类型。它们的存储方式和数据检索方式都不一样。
VARCHAR和CHAR的数据检索效率:CHAR > VARCHAR
VARCHAR类型
VARCHAR类型用于存储可变长字符串,是最常见的字符串数据类型。它比定长类型更节省空间,因为它仅使用必要的空间。
VARCHAR类型的实际长度是它的值的实际长度+1,这一个字节用于保存实际使用了多大的长度。VARCHAR节省了存储空间,所以对性能也有帮助。
但是,由于行是变长的,在UPDATE时可能使行变得比原来更长,这就导致需要做额外的工作。
CHAR类型
CHAR类型用于存储定长字符串,CHAR字段上的索引效率级高。比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。CHAR值会根据需要采用空格进行填充以方便比较。
应用场景
VARCHAR类型适用于文章标题、商品名称、图片路径等字符串最大长度大于平均长度的列。
CHAR类型适用于存储密码的MD5值、手机号码、身份证号码、订单号等长度相对固定的列。
总结
该字段数据集的平均长度与最大长度是否相差很小,若相差很小优先考虑CHAR类型,反之,考虑VARCHAR类型。
若字段存储的是MD5后的哈希值,或一些定长的值,优先选取CHAR类型。
若字段经常需要更新,则优先考虑CHAR类型,由于CHAR类型为定长,因此不容易产生碎片。
对于字段值存储很小的信息,优先选取CHAR类型,因为VARCHAR类型会占用额外的字节保存字符串长度信息。
当能够选取CHAR类型的时候,或者说空间消耗相对并不是影响因素的重点时,尽量选取CHAR类型,因为在其他方面,CHAR类型都有着或多或少的优势。而当空间消耗成为了很大的影响因素以后,则考虑使用VARCHAR类型。
mysql的char和varchar_MySQL中CHAR和VARCHAR的区别及应用场景相关推荐
- php使用hset报错,redis中set和hset的区别和使用场景
下面由redis教程栏目给大家介绍redis中set和hset的区别和使用场景,希望对需要的朋友有所帮助! redis中存数据时,到底什么时候用 hset 相比于 set 存数据时又有什么不一样? s ...
- C#中抽象类和接口的区别与应用场景
一直对这两个基础概念没有很好的认识,在网上发现一个我能够理解的基础概念理解,存一下,反复看. C#中抽象类和接口的区别与应用场景一. 1.抽象类:抽象类是特殊的类,只是不能被实例化;和普通类一样里面什 ...
- mysql in varchar_MySQL中char和varchar有啥区别?优缺点是啥?
在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定的长度,而varchar属于可变长的字符类型. char与varchar的区别 c ...
- java char 打印_Java中char[]输出不是内存地址的原因详解
前言 Java中共有八种基本数据类型:byte,int,short,long,float,double,char,boolean. 计算机中的基础数据单位是bit, 1byte=8bit. 数据类型 ...
- java Char与char_JAVAc++中char和char[]的区别
JAVAc++中char和char[]的区别 (2011-05-17 09:25:45) 标签: 杂谈 地方. 但是留意p1.p2自身是在栈中的. 2. 2申请后系统的响应 栈:只要栈的剩余空间大于所 ...
- mysql id in set_mysql数据库中find_in_set()和in()用法区别
mysql数据库中find_in_set()和in()用法区别 (2015-07-19 08:30:21) 标签: mysql数据库 find_in_set 在mysql中in可以包括指定的数字,而f ...
- mysql的char和varchar_MySQL的char和varchar
1.varchar类型的变化 MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定).在 MySQL5.0以 ...
- mysql char(36)_MySQL中char(36)被认为是GUID导致的BUG及解决方案
有时候在使用Toad或在程序中,偶尔会遇到如下的错误: System.FormatException GUID 应包含带 4 个短划线的 32 位数(xxxxxxxx-xxxx-xxxx-xxxx-x ...
- mysql char(36)_MySQL中char(36)被認為是GUID導致的BUG及解決方案
轉載地址:http://www.cnblogs.com/end/archive/2012/12/26/2834068.html (近日正好有一個項目需要用到C#來操作MySQL數據庫,遇到這個奇怪的問 ...
最新文章
- 机器人纹身师出世,你敢让它帮你纹身吗?
- redis异常解决:JedisDataException: ERR Client sent AUTH, but no password is set
- wine: Unhandled page fault on read access to	0x00000000 at address 0x10b1fb8
- JS中的THIS处理及正则表达式 — 1、callapplyjson
- VS启动多个实例调试
- 实现Singleton模式
- STM32F103ZET6 PWM输出
- php用高德地图api坐标返回市_php 使用高德地图(一) 画多边形及编辑 获取坐标 (简单总结)...
- MSM8960处理器概述
- python怎么编写口算题_用Python开发小学二年级口算自动出题程序
- 重启电脑后MySQL数据丢失_为什么当我重启电脑时会出现数据丢失?
- python实例方法不可以用类调用_python中可以直接用类调用方法吗
- 怎样将cad布局导出来_CAD如何将布局里面的内容输出为 *.dwg文件? | 怎么把cad 中的数据输出...
- 因果推断笔记——因果图建模之Uber开源的CausalML(十二)
- Linux 配置nginx和php代理 ip访问
- 关于H5播放视频文件的问题
- 广州大学 计算机基础,广州大学计算机应用基础试卷A卷
- 自动称重管理软件功能如何助力企业实现信息化(一)
- 【C++】密钥加密法(指针应用)
- 量化金融干货丨如何使用DolphinDB快速计算K线