MySQL性能优化:due to type or collation conversion on field
一、问题介绍
有两张表A,和B,都有个一字段 DEV_CODE
数据规模,在10万条左右
查询A表中的DEV_CODE,并且DEV_CODE没有在B表的DEV_CODE中
SQL语句 类似这样
SELECT dev_code
FROM A
WHERE dev_code NOT IN (
SELECT dev_code
FROM B
WHERE ... );
问题现象:慢查询告警,执行时间查过10秒
告警日志
二、问题原因
A表的DEV_CODE 排序规则是 utf8_general_ci
B表的DEV_CODE 排序规则是 utf8_bin
三、验证结果
- B表的DEV_CODE 排序规则改为 utf8_general_ci
- 执行时间小于 500毫秒
- 不想成为架构师的厨师不是好码农
- 先把代码跑起来,在实践中理解技术知识点
- 从代码到原理,从简单到复杂,从轮廓到细节,从实践到理论
- 追求简单,容易使人理解,知识的上下文也是知识的一部分,例如环境、配置、版本,时间等
- 把理解的知识点分享出来,自造福田,自得福缘
- 欢迎留言交流,也可以提出问题,不炒菜的时候会完善文档
- 代码地址 https://gitee.com/jason78/sampanjavademo
- Jason@vip.qq.com 2022-1-19