簡體   English   中英

MySQL查詢緩存中昂貴的查詢?

[英]MySQL query cache for expensive queries?

我有此查詢,該查詢返回銷售量最高的10種產品,並在首頁上使用:

SELECT a.id, a.title, SUM(b.sold) as 'sold' FROM products a
LEFT JOIN stock b ON b.product_id = a.id
GROUP BY a.id ORDER BY sold DESC LIMIT 10

該信息不需要是最新的-可能只需要每天更新一次。 因此,我確實有兩個問題:

1)考慮到這是在評估每個單一產品的銷售總和(從每個產品都有多行的庫存表中),這在計算上是昂貴的查詢嗎?或者如果這是一個大型數據庫, 那會是嗎?

2)MySQL可以緩存該查詢並且每天僅更新一次嗎? 我知道它有一個查詢緩存,默認情況下會使用它,但是據此,每次售出物品數量發生變化時,該查詢都會失效。

老實說,我只是在尋找提高效率的方法。

我要做的是將其緩存在查詢數據庫的代碼中。 保留上一次查詢的時間戳記,如果該時間戳記是最近的,則返回緩存的結果,而不是運行查詢。 您還可以使用諸如memcached或Redis之類的緩存系統...完成設置后,您可能會發現一百多個可以使用它的地方!

或者,如果主頁上沒有其他動態內容,則可以將主頁轉換為每天生成一次的靜態HTML文件。 簡單快捷。

1)它和庫存表中的行一樣昂貴。

2)不,mysql沒有這樣的東西。 要緩存單個查詢,應使用應用程序緩存。 這是相當普遍的要求,當然,如何實現取決於您的應用程序及其體系結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM