2008-09-10 66 views
4

可能重複:
SQL Query to get latest price如何高效地從MySQL數據庫中選擇最新的條目?

我有一個包含股票價格的歷史數據庫。我想爲每個列出的股票選擇最近的價格。我知道PostreSQL有一個DISTINCT ON聲明,這在理想情況下適用於此。

表列爲nameclosingPricedate; namedate一起構成一個唯一索引。

最簡單(非常uneffective)的方法是

SELECT * FROM stockPrices s 
WHERE s.date = 
(SELECT MAX(date) FROM stockPrices si WHERE si.name = s.name); 

更好的方法,我發現是

SELECT * 
FROM stockPrices s JOIN (
    SELECT name, MAX(date) AS date 
    FROM stockPrices si 
    GROUP BY name 
) lastEntry ON s.name = lastEntry.name AND s.date = lastEntry.date; 

什麼將是一個有效的方式做到這一點?我應該創建哪些索引?

的重複:
SQL Query to get latest price

回答

0

我認爲你的第二個方法是非常有效的。它有什麼問題?

您必須爲名稱和日期添加索引。

+0

那麼,如果性能要求,你必須添加一個索引。如果是10個股票和一年的日常數據,我不會擔心:MySQL在桌面掃描方面相對比較出色。 – 2008-09-10 09:36:31

相關問題