我有兩張表,新聞和news_views。每次查看文章時,新聞標識,IP地址和日期都記錄在news_views中。可以優化此MySQL子查詢嗎?
我正在使用帶有子查詢的查詢來獲取新聞中瀏覽次數最多的標題,方法是獲取最近24小時內每個視圖的總計數。
它工作正常,但它需要5-10秒才能運行,大概是因爲news_views中有成千上萬的行,它必須在完成之前通過整個表。查詢如下,有沒有什麼辦法可以改進?
SELECT n.title
, nv.views
FROM news n
LEFT
JOIN (
SELECT news_id
, count(DISTINCT ip) AS views
FROM news_views
WHERE datetime >= SUBDATE(now(), INTERVAL 24 HOUR)
GROUP
BY news_id
) AS nv
ON nv.news_id = n.id
ORDER
BY views DESC
LIMIT 15
你的桌子上有什麼索引? – 2010-03-28 02:01:58
沒有,有什麼建議嗎? – Dan 2010-03-28 02:09:19