2014-09-29 33 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'