任何人都願意幫助我嗎?以下查詢在具有10000行的MEMORY表上大約需要18秒。如果我沒有「哪裏」限制,那隻需要一分鐘。我打開了查詢緩存並將其作爲準備好的語句嘗試。有什麼我可以做的嗎?索引還是什麼不?增加MySQL查詢性能 - 數學量大查詢
SELECT SQL_CACHE
date(todaydata.postdate) as postdate,
SUM(CASE when todaydata.amount > 0 THEN todaydata.amount ELSE 0 END) AS INFLOW,
SUM(CASE when todaydata.amount < 0 THEN todaydata.amount ELSE 0 END) AS OUTFLOW
FROM invoice as todaydata
LEFT JOIN invoice as yesterdaydata ON todaydata.postdate=DATE_ADD(yesterdaydata.postdate,interval -1 day)
where todaydata.postdate between now() - interval 2 month and now() + interval 1 month
GROUP BY date(todaydata.postdate)
它看起來像你試圖得到一個滾動的每日流入/流出設置爲一個給定的3個月期限,按個別日期分組......爲什麼你從「今日」加入到「昨天-1」(這將實際上是一個2天的差異,而不是「昨天+1」來匹配當前的日期。你對輸出的整體意圖是什麼。 – DRapp 2012-01-11 00:53:16
確認,抱歉,好點。這個查詢是關於我的SQL知識如此變得如此粗糙對於我來說,在這一點上,我有一張交易表,它發生的日期和金額,試圖讓每天的總額從當天的流入和流出中得到,最終的遊戲是每天的開始平衡,流入,流出並結束餘額:) – 2012-01-11 01:06:42