我有一個很大的表,裏面有什麼本質上的日誌條目。對於大多數我的查詢,我需要與最近的條目的表,所以我創建從下面查詢「視圖」:MySQL從查詢中創建表
SELECT t1.store_id, t1.code_id, t1.working, t1.expiration, t1.details, t1.price
FROM code_stores t1
LEFT OUTER JOIN code_stores t2
ON (t1.store_id = t2.store_id AND t1.code_id = t2.code_id AND t1.id < t2.id)
WHERE t2.store_id IS NULL
然後我用我的查詢這個「視圖」。不幸的是,這導致查詢速度緩慢,所以我想以某種方式緩存這個視圖的結果。由於這個視圖每天只會改變幾次(當我可以運行一個查詢來更新緩存表)時,我想創建一個臨時表來存儲這個視圖的結果,並在整個一天中更新它。
我該如何去做這件事?我閱讀了物化視圖,但似乎它們不適用於mysql。更多的幫助將不勝感激。
你爲什麼不添加索引? –
您是否指向特定列添加索引?我經歷過並在任何地方添加了'WHERE'或'JOIN ON',性能仍然很差(每個查詢1秒)。我嘗試過使用'EXPLAIN',但是我已經把頭髮拉出了很長時間,試圖弄清楚這一點。我認爲緩存這種觀點可能會提高性能。 – xur17
看來我的問題是查詢結果的數量。查詢輸出> 1000行。如果我應用LIMIT 20,它將查詢時間減少到13ms。我想我只需要爲此提出一個更好的結果頁面,這不涉及顯示1000行。 – xur17