MongoDB查询性能:返回所有vs选择字段

时间:2014-05-13 17:41:13

标签: mongodb

我在测试用于测试目的的集合上对各种查询的性能进行基准测试时遇到了一些意想不到的结果。该集合在某种程度上模仿了我的真实需求,包含10.000个文档,每个文档有20个字段(每个字段有5-30个字符)。所有文件完全相同,并且只有_id不同(也许这就是问题?)。

与官方MongoDB documentation建议的相反,指定返回的字段不会带来更好的性能,但更糟糕的是。

普通的发现大约在5毫秒内完成。

db.collection.find().explain()

自定义查找在大约30毫秒内完成。

db.collection.find({},{Field1:1,Field2:1,Field3:1,Field4:1,Field5:1,Field6:1,Field7:1},{}).explain()

普通的“全部找到”和“全部返回”查询真的更快还是我错过了什么?

1 个答案:

答案 0 :(得分:1)

如果您返回整个文档 - 它对数据库的开销较小,因为它不会将文档转换为返回部分文档。 所有文档都以BSON格式存储在数据库中。并以同样的方式返回。

在您的情况下,预计会有很小的开销。

当您拥有10000个生成的文档时,字段限制适用于大量数据,并且在DBMS级别转换文档而不是通过套接字层进行传输要快得多。