做者:王顺
爱可生 DBA 团队成员,在公司负责项目中处理数据库问题,喜欢学习技术,钻研技术问题。
本文来源:原创投稿
*爱可生开源社区出品,原创内容未经受权不得随意使用,转载请联系小编并注明来源。
客户生产环境数据库迁移,数据库从 MariaDB 10.4 迁移到 MySQL 5.7,一条业务 SQL 运行很慢。从客户了解到业务以前在 MariaDB 运行正常,近期业务没有变动过,迁移到 MySQL 5.7 运行很慢,已经影响业务正常使用。数据库
(因生产环境涉及敏感信息,如下信息为测试环境信息)学习
从 MySQL 5.7 执行计划的 warnings 中,能够清晰的看到 id 字段的字段类型或排序规则转换,没法使用索引。测试
能够看到排序规则改变后,执行计划正常。spa
使用 convert 对 sbtest1 表 id 字段进行转换,执行计划正常。3d
MySQL 5.7 检测到表 sbtest1 的 id 字段和表 sbtest2 的 id 字段的 collation 不一样,没有正常走索引,形成查询很慢。经过改变排序规则或使用 convert 转换能够解决。因为 MariaDB 和 MySQL 的 collation 转换规则对执行计划的影响不一样,在 MariaDB 中,不一样的 Collation 并无影响到查询效率。blog