2012-07-02 160 views
2

我在下面的SQL查詢遇到問題......它釘住了我的服務器上的CPU並最終超時而不返回結果。查詢的格式是否正常?MySQL查詢超時

BD

SELECT dfa_data_dump.date, 
     campaignname, 
     placementgroup, 
     placementstartdate, 
     placementenddate, 
     placementgrouptotalbookedunits, 
     placementgroupid, 
     sitename, 
     dfa_data_dump.placementid, 
     placement, 
     dfa_data_dump.placementrate, 
     placement_rates.ratetype, 
     placementtotalbookedunits, 
     placementsize, 
     time_dimension.month, 
     Sum(impressionsdelivered), 
     Sum(clicksrecorded), 
     Sum(totalactivities), 
     Sum(totalcost) 
FROM dfa_data_dump 
     INNER JOIN time_dimension 
       ON time_dimension.date = dfa_data_dump.date 
     INNER JOIN placement_rates 
       ON placement_rates.placementid = dfa_data_dump.placementid 
GROUP BY dfa_data_dump.date, 
      campaignname, 
      placementgroup, 
      placementgrouptotalbookedunits, 
      placementgroupid, 
      sitename, 
      placementid, 
      placement, 
      placementrate, 
      placementtotalbookedunits, 
      placementsize, 
      time_dimension.month 
+1

您需要提供更多信息。你的表結構是什麼樣的?指標?你能提供一個DESCRIBE結果嗎?這可能是需要時間的分組和聚合。 – alexn

回答

1

我猜你的查詢是起源於CGI,而超時,然後殺死了MySQL查詢。來自CGI的直接數據庫意味着你的查詢必須很快,否則你會遇到這個麻煩。

所以你要麼讓它變得更快,要麼把抓取放到不是時間關鍵的後端腳本中。

您可以使用索引大幅提高性能 - 索引要加入的列以作爲開始。這可能足以解決它,下一個是查看你的GROUP BY列 - 其中有很多,這可能會傷害你。它取決於您要分組的數據量,以及有多少個不同的值出現在那裏。