【发布时间】:2012-11-27 17:45:30
【问题描述】:
我有一个外部 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 语句,以后我可以用它来构建视图表。
【问题讨论】:
-
What speed you are getting for Select * from trans where id='12' -
嗨,Sami,我只是在随机用户测试。来自 PHPMyadmin,它在 0.0008 秒内花费了 274 个数据(显示 0 - 29 个数据)。 edit 如您所见,直接调用表格非常快并且没有问题。问题仅出现在尝试获取先前数据时。我似乎无法获得正确的选择语句。
标签: mysql optimization select row