MySQL慢查询分析
2017-02-17
留言
记录一次SQL优化
MySQL出现CPU使用率高,IO很低,记录下分析过程:
SQL语句如下:123456select auh.id from admin_user_history as auh, admin_user as au where auh.`login_id`=au.`login_id` order by auh.gmt_create desc limit 0,10;
执行计划如图:
分析:可以看到两张表的数据并不多,对于join字段login_id,admin_user表login_id
varchar(32) 包含索引KEY idx_gmtC_loginId
(gmt_create
,login_id
),admin_user表login_id varchar(128)无索引。由于admin_user没有用到所以所以执行计划的过程是先做39064*8291的数据join再排序,都是非常耗CPU的,根据测试一个会话一句SQL会用满一个核。。。
解决: admin_user添加logdin_id索引
执行计划:
现在产生的数据量就很少了。
经验:
在两个表关联时候,可能都要加上索引来优化。