如何使用sum(:field)排序而不使用temp filesort

时间:2016-05-30 07:17:33

标签: mysql

因此,我们希望通过用户操作获得最多积分的对象(评论,图片上传等)。每个动作都以其point-value和target存储。

select sum(points) as points, target_type,target_id from user_actions where target_type="Modification" group by target_id order by points DESC limit 100

显示0到99行(总共100行,查询耗时200.7865秒。)

表格大小为4M行。

指向 target_type target_id

如果我解析查询,它说它正在使用临时文件。这显然是在杀死它。

问题

我是否有机会加快查询速度?

1 个答案:

答案 0 :(得分:1)

如果未在其他地方使用,您可以添加其他索引或更改现有索引。

Points列未编入索引,如果它将显着提高您的效果:

CREATE INDEX user_actions_indx 
ON user_actions (target_type,target_id,points);