如何有效地从MySQL数据库中选择最新的条目?

时间:2008-09-10 09:11:00

标签: sql mysql

  

可能重复:
  SQL Query to get latest price

我有一个包含股票价格历史的数据库。我想为每个列出的股票选择最近的价格。我知道PostreSQL有一个DISTINCT ON语句,非常适合这里。

表格列为nameclosingPricedate; namedate共同构成了一个独特的索引。

最简单(并且非常无效)的方式是

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

2 个答案:

答案 0 :(得分:3)

请参阅similar post

答案 1 :(得分:0)

我认为你的第二种方法非常有效。它的问题是什么?

您必须为名称和日期添加索引。