求大神,如何优化这条sql

语句是这样的:

SELECT
    *
FROM
    (
        SELECT
            DAY AS times,
            ifnull(SUM(bid_request), 0) AS bid_request,
            count(*) AS winnotice,
            ifnull(SUM(budget), 0) AS budget,
            ifnull(SUM(cost), 0) AS cost
        FROM
            pmp_report_history_creative
        WHERE
            1 = 1
        AND STATUS = 1
        AND type = 0
        GROUP BY
            DAY
    ) tb1
WHERE
    tb1.times BETWEEN '2016-12-13'
AND '2016-12-19';

这样查询需要15秒左右,而且还加了索引,索引如下:
图片描述
请问如何优化这条sql,谢谢:)

阅读 1.6k
1 个回答

你是先把所有数据group by DAY了,然后取出指定日期的计算量当然大了

应该是先取指定日期的再group by,还有不需要嵌套,你外层就限定日期的,啥都没做,直接去掉

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题