想要优化一句关于group by语句,不知道要从何下手,求思路
SELECT
adv_id,
network_id,
SUM(re_click) AS clk,
SUM(deny_click) AS dny_clk,
SUM(re_conver) AS re_ins,
SUM(mat_conver) AS mat_ins,
SUM(def_conver) AS def,
SUM(cost) AS cost,
SUM(earn) AS earn
FROM ams_data_hourly_2018_03
WHERE start_time
BETWEEN 1519862400 AND 1519948799
GROUP BY
adv_id,
network_id
explain:
索引:
求大神指点
1、时间检索结果集小的话就一个start_time单列索引就够了,force一下索引,因为group by会引导mysql走group by字段的索引或者直接全扫。
2、看表名,你这应该是一个分表,如果时间范围直接覆盖了大部分表数据的话什么索引都不用了,全表扫吧,什么三个字段两个字段加索引并没有什么用,时间范围加group by字段的复合索引也只用到了时间字段,只有group by字段的索引就是扫了全表,除非用索引覆盖