我有一个包含超过400万个文档的MongoDB集合。我试着通过以下方式接收文件。
db.getCollection(collectionName).find(new Document("lang", lang))
.skip(skip).limit(limit).sort(new Document("date", 1));
花了443秒。
db.getCollection(collectionName).find(new Document("lang", lang))
.sort(new Document("date", 1)).skip(skip).limit(limit);
花了529秒。
两个查询都提供了完全相同的结果。
这是由于网络速度的变化吗?这里的调用堆栈是什么?我希望结果根据方法调用的顺序不同。
答案 0 :(得分:0)
两个查询都返回相同的结果。第一个将限制结果改进网络IO然后进行排序,而第二个将排序所有然后限制结果。
使用索引来提高查询性能。如果查询搜索多个字段,请创建复合索引。扫描索引要比扫描集合快得多。