我有一个 MS SQL 表,其中包含具有以下列的股票数据:Id, Symbol, Date, Open, High, Low, Close
.
我想自行加入表格,这样我就可以获得Close
.
我必须创建一个查询,该查询将以每条记录还包含上一个会话的数据的方式将表与自身连接起来(请注意,我不能使用昨天的日期)。
我的想法是做这样的事情:
select * from quotes t1
inner join quotes t2
on t1.symbol = t2.symbol and
t2.date = (select max(date) from quotes where symbol = t1.symbol and date < t1.date)
但是我不知道这是否是正确/最快的方式。在考虑性能时我应该考虑什么?(例如,将 UNIQUE 索引放在 (Symbol, Date) 对上会提高性能吗?)
该表中每年将有大约 100,000 条新记录。我正在使用 MS SQL Server 2008