Record

机会是留给有准备的人

sql优化

起因

公司慢日志里满是这sql耗时

分析

从图一看,使用explain 分析一下,主要原因是Using temporary; Using filesort,用到临时表,然后又来个排序。就非常耗时
试了多种写法,最后发现改了第二个join 为子查询后,速度很快,explain一下,发现Using temporary; Using filesort没了。

修改一,发现三个表join,然后order by 必然会出现Using temporary; Using filesort,
然后就减少表join,使用子查询。

修改二,仍然发现order by 主表字段时必然出现Using temporary; Using filesort,
改order by join的表就未出现(原因待解),只出现Using filesort

修改三,给hits表count字段添加索引
原因是:order by字段能够使用index的有序性,所以没有使用filesort

问题又来了,由于是ruby代码写的,无从下手。
这就是为什么一直不喜欢不写sql的程序员。