SELECT p.id_product
FROM popularity p, products pr
WHERE p.id_product = pr.id_product
AND p.date >= (DATE_SUB(CURDATE(), INTERVAL 30 DAY))
GROUP BY p.id_product order by count(p.id_product) desc LIMIT 0, 6
我想知道如何儘可能優化我的查詢。我試圖削減脂肪,特別是這個查詢給我帶來了麻煩,因爲它在任何地方都被使用。我有一個表格,用於存儲正在訪問的產品頁面的每個實例,以及另一個包含產品的表格。優化Group By和Date函數
p.id_product是一個非唯一鍵,而pr.id_product是產品的表主鍵。我不認爲我正在執行我的查詢,因爲看起來我正在做一個完整的索引掃描來完成兩個表之間的連接。我不確定以這種方式調用DATE_SUB是最好的主意(我正在查看過去的一個月),或者我的小組/訂單是否正確。我的數據庫的表也在InnoDB上運行。
有什麼辦法可以讓這個更快嗎?我已經設置了查詢限制,因爲我注意到該軟件從未使用超過6個結果
表已經有一堆指標。受歡迎的id_product是索引,產品中的id_product是主鍵。當然他們是 – Sefam
。我看到的是日期專欄(012)關注 – Drew
。我爲產品ID和日期添加了一個索引。現在就像魅力一樣。 – Sefam