第4章:数据库字段类型优化——VARCHAR vs CHAR,JSON 类型的使用陷阱

本章你将彻底搞懂:VARCHAR 和 CHAR 在存储、性能、内存使用上的本质区别,以及如何根据数据特征选择合适类型。JSON 类型的优缺点,如何用生成列(Generated Column)提升 JSON 查询性能。字段长度对索引大小和查询效率的影响。真实案例:一张 500 万行的表,把 VARCHAR(255) 改成 VARCHAR(20) 后,索引大小从 1.2GB 降到 200MB,查询速度提升 5 倍。另一个案例:滥用 JSON 导致 CPU 飙升,改用生成列后降低 80%。
配套资源:字段类型选择决策树、CHAR/VARCHAR 性能测试脚本、JSON 与生成列对比 SQL、字段长度优化自检清单。
真实踩坑:我曾把一个手机号字段定义为 VARCHAR(255),导致联合索引占用过大内存,命中率极低;还有一次用 JSON 存储用户扩展属性,查询时用 JSON_EXTRACT 导致全表扫描,数据量到 200 万后接口超时;更坑的是,CHAR(32) 存储 MD5 值与 VARCHAR(32) 性能差异巨大,因为 CHAR 会填充空格,索引效率低。


4.1 一个“VARCHAR(255) 索引炸弹”事故

2019 年我在一家创业公司,负责用户中心优化。某天监控显示一个按照手机号查询用户的接口响应时间从 50ms 涨到 800ms。我查看慢查询日志,发现 SQL 很简单:


                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值