我有兩個表。一種是點擊日誌,記錄我們收到點擊的確切時間。第二個是美元/日表格,記錄我們每天在特定網站上獲得的金額。加速mysql查詢
我需要計算每個網站的每日每次點擊費用。查詢波紋管正在工作,但需要將近一分鐘。
這裏的結果說明:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE click_log ALL url_id,click_time NULL NULL NULL 1404209 Using where; Using temporary; Using filesort
1 SIMPLE daily_dollars ref url_id,date date 3 func 6 Using where
和查詢:
SELECT date(click_log.click_time) AS DAY,
click_log.shorturl AS site,
daily_dollars.money AS earned,
count(click_log.click_id) AS clicks,
daily_dollars.money/count(click_log.click_id) AS CPC
FROM `yourls_log` AS click_log, yourls_url_money AS daily_dollars
WHERE click_log.click_time >= "2011-07-01"
AND click_log.url_id = daily_dollars.url_id
AND date(click_log.click_time) = daily_dollars.date
GROUP BY DAY , click_log.shorturl
什麼我可以做,以加快這?
表結構:
yourls_log
----------
click_id
click_time
shorturl
url_id
yourls_url_money
----------------
id
url_id
date
money
能否請您發佈的表結構? – 2012-01-07 02:30:50
對於如何加快查詢的速度,我在MySQL方面還不夠完善,但我可以做的建議是[使用明確的'JOIN'方法](http://mysqljoin.com/)。 – Bojangles 2012-01-07 02:32:22
它是GROUP BY,因爲它不能使用索引,查詢變慢。如果沒有具體的理由,請嘗試刪除GROUP BY。順便說一下,從你的查詢中'DAY'指的是'click_log'.'click_time',並且由於時間可能在條目之間有很大差異,我沒有理由在'DAY'上分組,不是嗎? – Abhay 2012-01-07 02:43:30