我有一个外部 3rd 方程序将数据库实时导出到 mysql,我想显示用于报告的数据。所以,我不能改变结构,因为它是实时同步的。
表结构是这样的
ID | Date | Transaction
-----------------------------
12 | 2012-11-01 | 200
12 | 2012-11-02 | 250
12 | 2012-11-03 | 150
12 | 2012-11-04 | 1000
12 | 2012-11-05 | 225
....
13 | 2012-11-01 | 175
13 | 2012-11-02 | 20
13 | 2012-11-03 | 50
13 | 2012-11-04 | 100
13 | 2012-11-05 | 180
13 | 2012-11-06 | 195
数据非常大,而且每天都在变大。
我想做的是基于以下内容构建报告(视图表):
ID | Date | Transaction | Prev Day Transaction
----------------------------------------------------
12 | 2012-11-01 | 200 | 0
12 | 2012-11-02 | 250 | 200
12 | 2012-11-03 | 150 | 250
12 | 2012-11-04 | 1000 | 150
12 | 2012-11-05 | 225 | 1000
....
13 | 2012-11-01 | 175 | 0
13 | 2012-11-02 | 20 | 175
13 | 2012-11-03 | 50 | 20
13 | 2012-11-04 | 100 | 50
13 | 2012-11-05 | 180 | 100
13 | 2012-11-06 | 195 | 180
我只是无法获得快速选择语句。目前原始数据已经是 283,120 行。它将每天增长 500 行。
我试过类似的东西:
SELECT *, (SELECT transaction FROM table as t2 WHERE t1.id=t2.id
AND t1.date>t2.date ORDER BY t2.date DESC LIMIT 0,1)
FROM table AS t1
它正在工作,但 select 语句非常慢。大多数时候,它会在手术过程中被切断。
我需要帮助的是一个非常快速的 sql 语句,稍后我可以使用它来构建视图表。