2014-09-29 43 views
0

即时通讯运行下面的查询,并想知道是否有反正加快。加快更新,内部加入,其中日期之间,MySQL组查询

我每个月都会多次运行相同的查询,这很奇怪,因为有些月份运行速度非常快(10秒),有些运行时间很长(30分钟)。几个月之间的总和差异并不那么大,所以我不知道问题是什么。

下面是该查询

UPDATE appmonth a 
    INNER JOIN (SELECT activity_id, COUNT(*) AS counts FROM appmaster 
    WHERE upload_date BETWEEN '2014/05/01' AND '2014/05/31' 
    GROUP BY activity_id) b 
    on b.activity_id = a.activity_id 
SET `2014_05` = b.counts 

我没有在桌子上appmonth正在更新任何索引。

我对appmaster桌子下面的指标设置

  • 活动,UPLOAD_DATE
  • 活动
  • UPLOAD_DATE,活动

回答

0

我可以建议是这样的:

UPDATE appmonth AS a 
    INNER JOIN (SELECT activity_id, COUNT(*) AS counts FROM appmaster 
    WHERE upload_date >='2014/05/01' AND upload_date <= '2014/05/31' 
    GROUP BY activity_id) AS b 
    ON b.activity_id = a.activity_id 
SET a.`2014_05` = b.counts 

BETWE EN是一个缓慢的情况。

并在appmonth上添加索引'activity_id'。

P.S. appmaster上的索引'activity_id'是无用的,因为您还没有'activity_id,upload_date'