首页 > 解决方案 > 使用 mongolite R 索引 MongoDB 不会提高速度

问题描述

通过阅读 mongolite 手册https://jeroen.github.io/mongolite/query-data.html,它指出如果我索引我最常过滤的列,我应该会看到速度提升。

我有一个股票开盘价、Hi、Lo、收盘价的数据框。df 约为 60k 行。这是一瞥。

head(df.ts$find())
 price_open price_high price_low price_close   ref_date ticker   SMA200
1     279.64     279.80    278.84      279.34 2018-07-16    SPY 267.8959
2     278.47     280.91    278.41      280.47 2018-07-17    SPY 268.0465
3     280.56     281.18    280.06      281.06 2018-07-18    SPY 268.1956
4     280.31     280.74    279.46      280.00 2018-07-19    SPY 268.3340
5     279.77     280.48    279.50      279.68 2018-07-20    SPY 268.4681
6     279.45     280.43    279.06      280.20 2018-07-23    SPY 268.6033

我只做一个查询,按库存过滤并收集其余数据集。

system.time({
df = df.ts$find(
  query = '{"ticker" : "SPY" }',
  fields = '{"_id" : false, "price_close" : true, "ref_date" : true, "SMA200" : true}'
)
})

Imported 267 records. Simplifying into dataframe...
   user  system elapsed 
   0.00    0.00    0.13 

如您所见,这需要我大约 0.15 秒的时间来检索。听手册,我将代码设置为索引列。

df.ts$index(add = '{"ticker" : 1}')

我现在重新运行代码以期待速度提升。

 system.time({
    df = df.ts$find(
      query = '{"ticker" : "SPY" }',
      fields = '{"_id" : false, "price_close" : true, "ref_date" : true, "SMA200" : true}'
    )
    })

    Imported 267 records. Simplifying into dataframe...
       user  system elapsed 
       0.00    0.00    0.14 

你可以看到没有速度提升。这个问题有解决方案吗?在手册中,作者能够看到巨大的速度提升。

标签: rmongodbmongolite

解决方案


推荐阅读