【发布时间】:2015-05-13 22:24:36
【问题描述】:
MongoDB 文档的大小会影响 find() 查询的性能吗?
我在 MongoDB shell 中对集合运行以下查询
r.find({_id:ObjectId("5552966b380c2dbc29472755")})
整个文档为 3MB。当我运行此查询时,该操作大约需要 8 秒才能执行。该文档有一个“salaries”属性,它构成了文档大小的大部分(大约 2.9MB)。因此,当我省略薪水属性并运行以下查询时,它只需要不到一秒钟的时间。
r.find({_id:ObjectId("5552966b380c2dbc29472755")},{salaries:0})
我只在运行 find() 查询时才注意到这种性能差异。当我运行 find().count() 查询时没有区别。似乎只有当我想获取整个文档时性能才会下降。
集合永远不会更新(大小永远不会改变),在 _id 上设置了一个索引,并且我已经在数据库上运行了 repairDatabase()。我在网上搜索过,但找不到令人满意的答案来解释为什么会有性能差异。任何见解和建议将不胜感激。谢谢。
【问题讨论】:
标签: node.js mongodb database-performance database nosql