我有一個MySQL表像這樣的:幫助需要優化的MySQL SELECT查詢
day int(11)
hour int(11)
amount int(11)
日是用從0跨越至365的值的整數,假設小時是一個時間戳和量僅僅是一個簡單整數。我想要做的是選擇金額字段的值爲特定的一組天數(例如從0到10),但我只需要當天可用金額的最後一個值,這實際上是小時字段有其最大值(當天內)。這聽起來不太難,但我提出的解決方案完全沒有效率。
這就是:
SELECT q.day, q.amount
FROM amt_table q
WHERE q.day >= 0 AND q.day <= 4 AND q.hour = (
SELECT MAX(p.hour) FROM amt_table p WHERE p.day = q.day
) GROUP BY day
它需要5秒鐘執行一個11K行表查詢,它只是需要5天的跨度;我可能需要選擇整個月份或年份的跨度,因此這不是有效的解決方案。如果需要的話
如果誰可以幫我找到另一種解決方案或優化這個人是真的感謝
編輯
沒有指標設定,但(日,小時,量)可能是一個PRIMARY KEY
設置了哪些索引?無論如何,請發表您的表CREATE語句(或架構轉儲) - 它會讓人們更容易提出建議。 – 2011-01-20 23:27:06
實際上沒有設置索引,因爲我不知道如何正確設置它們來幫助整體性能。無論如何,正如我所說(日,小時,金額)可能是主鍵 – 2011-01-20 23:32:57