mysql优化--避免数据类型的隐式转换

发现mysql服务器CPU占用率较高,并且从服务器上数据滞后主服务器很长时间。mysql

从slow log文件中找到这样一条sql语句。sql

这个sql语句query_time达到了48.8秒,一个根据主键去更新的update语句竟然耗时这么长。服务器

查看执行计划,发现语句没法使用索引。索引

检查后发现主键_id字段是varchar类型,而语句中是long类型,发生了隐式类型转换,致使该语句没法使用主键索引,而必须走全表扫描(rows_examined:853805)的时候,全表扫描时是有表锁的(lock_time:46.41)。部署

在找到这个sql的来源,并修改为传递varchar类型后,再看执行计划,已经能够使用主键索引。date

部署到主站后发现服务器CPU使用率降低,从服务器的数据滞后时长也变成了0秒。sql语句

 

数据类型隐式转换的小问题也能形成很大的影响。数据类型

相关文章
相关标签/搜索