char、varchar 哪种的搜索效率高
来源:互联网 发布:淘宝不发货卖家不说话 编辑:程序博客网 时间:2024/06/06 08:30
char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,mysql就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节)。
char 固定长度,所以在处理速度上要比varchar快速很多,但是对费存储空间,所以对存储不大,但在速度上有要求的可以使用char类型。
定长的char的优势:
一,存储很短的信息,比如门牌号码101,201……这样很短的信息应该用char,因为varchar还要占1个byte用于存储信息长度,本来打算节约存储的现在得不偿失。
二,固定长度的。比如使用uuid作为主键,那用char应该更合适。因为他固定长度,varchar动态根据长度的特性就消失了,而且还要占1个长度信息。
三,十分频繁改变的column。因为varchar每次存储都要有额外的计算,得到长度等工作,如果一个非常频繁改变的,那就要有很多的精力用于计算,而这些对于char来说是不需要的。
总的说来:char定长,存储效率不如varchar,对于短数据的查询优于varchar
再者,搜索效率的优化光一个字段类型并起不到决定性的作用。常见的搜索优化方式除了建索引什么的外,对于千万级以上数据还可以使用
一个比较高效的方式,就是分区分块。我试过,和你的情况一样,主键,亿级数据,分区分块以后,搜索都是秒级的。
一.数据存储开销
1.char(n) 是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。
在程序中,会返回给你8位,后面的用空格补上;
在数据库中,char(8),占用16个字节(1个字符=2个字节);
2.varchar(n) 是长度为 n 个字节的可变长度且非 Unicode 的字符数据。n必须是一个介于1和 8000之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。
二.插入数据
1.char列的NULL值占用存储空间。
- varchar列的NULL值不占用存储空间。
插入同样数量的NULL值,varchar列的插入效率明显高出char列。
插入不为null的数据时,无论插入数据涉及的列是否建立索引,varchar列的插入效率也是明显高出char列。
三.更新数据
如果更新的列上未建立索引,则char的效率低于varchar,但效率差异不大。
如果更新的列上建立索引,则char的效率低于varchar,并且效率差异很大。
四.修改结构
无论增加或删除的列的类型是char还是varchar,操作都能较快的完成,而且效率上没有什么差异。
对于增加列的宽度而言,char与varchar有非常明显的效率差异,varchar列基本上不花费时间,而修改char列需要花费很长的时间。
五.数据检索
无论是否通过索引,varchar类型的数据检索略优于char的扫描。
那实际开发中,我们使用哪种呢?
当确定字符串为定长、数据变更频繁、数据检索需求少时,使用char;
当不确定字符串长度、对数据的变更少、查询频繁时,使用varchar。
- char、varchar 哪种的搜索效率高
- mysql中char与varchar的区别 哪种字段的查找效率高
- MySQL 数据库中的字段类型 varchar 和 char 的主要区别是什么?哪 种字段的查找效率要高,为什么?
- Mysql char varchar效率
- SQL中char和varchar的效率分析
- 由MySQL中char和varchar效率想到的
- 由MySQL中char和varchar效率想到的
- 关于char和varchar的查询效率问题
- char,varchar的使用
- char ,varchar的区别
- char和varchar和varchar的区别
- Varchar与char的区别
- Varchar与char的区别
- char 和 varchar的区别
- Varchar与char的区别
- char varchar nvarchar 的区别
- Varchar与char的区别
- VARCHAR与CHAR的区别
- Android 仿京东订单页面
- 数组
- 矩形的周长和面积
- Java的作业调度类库Quartz基本使用指南
- BioPerl-初探
- char、varchar 哪种的搜索效率高
- javax.script包
- 通过ajax将list传到后台的两种实现方式
- RecyclerView、ListView实现单选列表的优雅之路.
- redis-redis官网下载步骤(包含windows版)
- Unity3D研究院之UGUI一个优化效率小技巧
- ubuntu server 安装pwntools可能出现的问题解决
- 运行期以索引获取tuple元素-C++11之2
- ViewPager轮播图引导页代码和适配器