2008-09-10 62 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

相关问题