我有这个查询,它的主要目的是创建一个 View
SELECT block.id,min(block.timestamp)timestamp, historic.usd
FROM block, historic
WHERE block.timestamp <= historic.timestamp
GROUP BY id;
查询这些表
block
表:
| ID | timestamp |
| 0 | 2013-08-22 00:38:05 |
| 1 | 2013-08-22 00:37:53 |
历史
表:
| timestamp | USD |
| 2013-08-22 00:37:53 | 800 |
| 2013-08-22 00:38:30 | 799 |
| 2013-08-22 00:40:53 | 789 |
它在非常小的数据集上工作得很好,但我的数据集超过 400k 行。我该如何优化它?我确实意识到我需要使用 join 来加速它。
sqlfiddle:http://sqlfiddle.com/#!2/d54afc/8
提前致谢!
最佳答案
您需要做的是使用JOIN
对查询进行简单修改。
这是查询:
SELECT block.id,min(block.timestamp)timestamp, historic.usd
FROM block
JOIN historic
ON block.timestamp <= historic.timestamp
GROUP BY id;
这是工作 SQL Fiddle .
关于针对 400K 行以上大数据集的 MySQL 查询优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22319518/