mongodb - 如何在大型mongodb集合中高效查询数据?

我有一个大的 mongodb 集合(300 万个文档,50 GB),即使我创建了索引,查询数据也会很慢。

db.collection.find({"C123":1, "C122":2})

例如即使我为 C123C122 创建了单独的索引,查询也会超时或者会非常慢(至少 10 秒)。

我应该创建更多索引还是增加物理内存来加速查询?

最佳答案

对于这样的查询,您应该创建复合索引。一个在两个领域。然后它应该非常有效。创建单独的索引对您没有多大帮助,因为 MongoDB 引擎将首先使用来获取查询第一部分的结果,但是使用第二个 if 并没有多大帮助(甚至在某些情况下会因为查找而减慢查询速度索引表,然后再次在实际数据中)。您可以通过在 shell 中的查询上使用 .explain() 来确认已使用的索引。

查看复合索引:

https://docs.mongodb.com/manual/core/index-compound/

在制作索引时还要考虑对两个字段的排序方向。

https://stackoverflow.com/questions/42293823/

相关文章:

php - 在 Ubuntu 14 上将 PHP Mongo 扩展更新到 1.5

mongodb - 在 mongodb 中编辑子文档 N-N 关系

mongodb - 使用更新查询将文档值从字符串更改为 ObjectId

node.js - 从nodejs插入日期值到mongodb

mongodb - 如何将 MongoDB 存档文件转换为 JSON 格式?

node.js - NodeJS 崩溃 : Mongoose findById() does NOT

mongodb - 按 id 对 Mongo 文档进行分组,并按时间戳获取最新文档

ruby-on-rails - 运行 Rails 应用程序时的 Mongo::Error::NoSe

node.js - 防止 Mongoose 模式中数组中的重复条目

mongodb - 选择 2 个字段并返回具有不同值的排序数组