【问题标题】:MongoDb java driver projection performanceMongoDb java驱动投影性能
【发布时间】:2017-03-06 11:00:56
【问题描述】:

我在使用 MongoDB 时可能遇到过这样的问题。我在一个集合中有 860000 个文档,并且有 500 个这样的集合。我有 3 列,第一个和第二个字段是包含 10 个元素的 Array 类型,第三个是保留 currentTimeMillis 的 Int64 类型。当我从一张表中查询 1000 个文档时,大约需要 2500 毫秒。但是,当我执行相同的查询时,只获取两个字段的第一个元素(对数组使用 $slice 运算符)(彼此包含 10 个元素),大约需要 2000 毫秒。这看起来很奇怪。 MongoDB 位于远程主机中,因此我从网络中获取的数据大约小 10 倍,但花费的时间几乎相同。有什么想法吗?

【问题讨论】:

  • 你有这个字段的索引吗?
  • 是的。时间字段上有索引。我使用 mongo java 驱动程序查询。在 java 方面,我对 currentTimeMillis 使用 long 类型。但在 mongoDB 中,这个字段是 Int64。这会导致不使用索引吗,我不知道。这是这个问题的另一个问题。
  • 解释查询,它将为您提供有关索引使用情况的信息。
  • 找不到解释方法。
  • collection.find(whereQuery).projection(fieldQuery);这是java端的查询。

标签: mongodb performance find slice projection


【解决方案1】:

问题变成了这样 :) 当我使用 collection.find(whereQuery) 查询 1000 个文档时,大约需要 2400 毫秒。但是当我使用相同的代码查询 13 个文档时,大约需要 1500 毫秒。数据减少了 100 倍,但时间甚至不到一半。我是不是错过了什么。

【讨论】:

    猜你喜欢
    • 2015-11-26
    • 1970-01-01
    • 2013-08-16
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多