我不久前发布了这个问题。我尝试了这些建议,得出的结论是我必须做一些根本上是错误的事情。
我基本上想做的是这样的:

我有一个包含83Mio的表。时间/价格对。由于索引im使用毫秒级准确的unix时间戳,因此价格在1.18775到1.60400之间(精度为5的小数)。
我有一个客户需要在给定的时间间隔内得出价格密度,这意味着我想指定一个时间间隔并计算在此时间间隔内所有不同价格出现多少次。
你们会怎么做?您将如何设计/索引表格?现在,我正在建立一个临时子表,只包含给定间隔的数据,然后对价格进行计数。有一个更好的方法吗?我的常规数据库设置已经调好,性能相当不错。感谢您的提示!我将尽快提供所需的任何其他信息!

最佳答案

鉴于您拥有大量数据并且它的v迅速增长,我倾向于添加第二个表:

price (primary key)
time( some block - also part of PK )
count


做“插入重复的密钥更新计数++”之类的事情。按某个预定时间间隔对时间字段进行分组(取决于您获得的查询的种类..ms / sec / hour /无论如何)。这样,您:

 don't have to mess with temp tables - with a table of this size it will write to disk - slow even with SSD
 don't have to touch the initial table every time you want to do your query - might run into locking issues


您将需要稍微平均一些数据,但是可以预先确定粒度,以尽可能减少问题。

09-10 04:15
查看更多