r - 使用 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
你可以看到没有速度提升。这个问题有解决方案吗?在手册中,作者能够看到巨大的速度提升。
解决方案
推荐阅读
- terraform - 在 lambda_module 的预构建 ZIP 文件上计算源代码哈希?
- reactjs - 在 RxJS 主题的上下文中,next('r') 的目的是什么
- javascript - 如何检查数据库是否已更新
- python - 为什么从汤对象中提取文本时 HTML 源代码会发生变化?
- python - TypeError:重复的基类对象
- javascript - 如何使用 AlaSQL 查询嵌套的 json
- python - PyCharm 中的 WSL Conda 环境
- json - 如何在 jsonPath 中测试 JSON 数组
- php - 当用户关闭支付网关中的浏览器选项卡时,如何在其表中添加减少数量的项目
- c# - 使用 Excel 启动 HTML 文件