char和varchar在mysql中的效率怎样

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了char和varchar在mysql中的效率怎样相关的知识,希望对你有一定的参考价值。

储存空间大小的问题
运行速度没有区别
char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:
char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节).
在MySQL中用来判断是否需要进行对据列类型转换的规则
1、在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的.
2、只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的.
3、如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型.
例外:长度小于4个字符的char数据列不会被转换为varchar类型
参考技术A 因为char所存储的数据已经指定了位数,但varchar2不是。
举例说明:
表t中有列
a
char(4),
b
varchar2(4)
-------------------------------
select
a,
b
from
t
where
a
=
'1';
--
这个肯定是没有结果的
a列的位数与'1'的位数不一致
select
a,
b
from
t
where
b
=
'1';
--
这个有没有结果需要看数据
所以char的效率要比varchar2的效率要高,但同样char会自动用空格补齐数据,所以同样
位数的情况下,char所占的空间要比varcahr2大,而且由于char自动补齐了数据,所以给
开发造成了一定难度。

以上是关于char和varchar在mysql中的效率怎样的主要内容,如果未能解决你的问题,请参考以下文章

mysql关于char和varchar的查询效率问题

MySQL数据库中的字段类型varchar和char的主要区别是什么?哪种字段的查找效率要高,为什么?

MySQl中的char varchar text

Mysql 中 char varchar text的区别

mysql char与varchar区别

为啥我应该为 MySQL 中的 varchar 选择 255 以外的任何其他长度?