char和varchar在mysql中的效率怎样
发布网友
发布时间:2022-05-02 12:28
我来回答
共3个回答
懂视网
时间:2022-05-02 16:50
查询效率(在没有使用索引的情况下): varchar的字段查询要比char快
通过对比 char100 需要查询时间1.10s 而varchar100 需要时间是973ms
欢迎大家指正!!
mysql关于char和varchar的查询效率问题
标签:空间 对比 查询 情况 时间 arch bsp div 问题
热心网友
时间:2022-05-02 13:58
储存空间大小的问题
运行速度没有区别
char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:
char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节).
在MySQL中用来判断是否需要进行对据列类型转换的规则
1、在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的.
2、只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的.
3、如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型.
例外:长度小于4个字符的char数据列不会被转换为varchar类型
热心网友
时间:2022-05-02 15:16
因为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自动补齐了数据,所以给
开发造成了一定难度。