Mysql 同样的值varchar(50)和varchar(225)有区别么

博客探讨了在创建数据库表时,字符串字段长度如varchar(50)和varchar(255)之间的差异。虽然物理存储上对于相同的值没有区别,但在查询时,尤其是在使用MEMORY引擎并涉及临时表时,字段长度可能影响内存中数据存储和查询速度。对于InnoDB引擎,两者没有区别,仍然是变长存储。建议根据实际需求合理设定字段长度以优化性能。
摘要由CSDN通过智能技术生成

0、背景

    创建数据库表的时候,涉及到字符串字段的时候,有时候会考虑到,我字段要定义多长呢,对于一个字段,对于一个值name="小明",字段我定义为varchar(50)和varchar(255)有没有区别,有什么影响?

create table student(
name varchar(50)
)

insert into student (name) values ('小明')

1、对于物理存储上来说,没有区别

  • mysql存储行记录varchar的数据,是以下面的形式的,在【变长字段长度列表】这个块中存储varchar字段真实的length 
  • 所以对于同样的值“小明”,mysql都是存储同样的值到【列1的值】,同时存储【02】到【变长字段长度列表】 

2、但对于查询是有一定影响的。

(1)当使用了【MEMORY引擎】,并且涉及到创建临时表(SORT、ORDER 等)时,VARCHAR会转换为CHAR。而如果varchar(50)的话==>char(50),在内存中创建结果集时,它会将其转换为矩阵,字段越小,一个页面能存储的数据就越多,表扫描的记录就越快

(2)但对于InnoDB来说,是没有区别的,还是变动长度的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Venlenter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值