【发布时间】:2017-07-09 07:37:23
【问题描述】:
我目前有一个带有相当大数据库(大约 250m 文档)的 MongoDB 设置。目前,我有一个包含大部分数据的主要集合,它有一个索引(时间)。当只有时间在查询的 where 部分(使用索引)时,这会导致可接受的查询时间。
问题是当我需要使用复合键时 - 时间索引使用大约 2.5GB 内存,而我在服务器上只有 4GB,所以我不想创建复合键索引,因为这会阻止所有索引都适合内存,因此会减慢很多速度。
所以我的问题是:我可以先查询时间,然后再查询该子集的其他变量吗?
我应该指出我正在使用 Ruby 驱动程序。
目前,我的查询看起来像这样(这很慢):
trade_stop_loss_time = ticks.find_one({
"time" => { "$gt" => trade_time_open, "$lte" => trade_time_close },
"bid" => { "$lte" => stop_loss_price }
}).sort({"time" => 1})
谢谢!
【问题讨论】: