我知道什么是“全集扫描”。但是我有点不确定术语“集合扫描”是否适用于使用B-树游标的查询。使用除基本游标以外的游标的查询是否执行集合扫描?什么是MongoDB中的集合扫描?
1
A
回答
2
简短的答案是两个术语是相同的,或者说,只有“全面收集扫描”。
如果您的查询使用B树光标它是由定义不扫描收集看跌期权遍历指数,以便找到所查询的文档。
一个收集扫描发生在没有指标能满足查询,我们必须扫描全额征收,以便找到所需文件。查看所有信息的链接。
http://docs.mongodb.org/manual/reference/method/cursor.explain/
2
集合扫描就是从字面上扫描整个集合。当用户请求使用某些无法使用索引进行回答的条件查找文档时,会发生这种情况。 比如让说,我们有一个用户收集与领域,如姓名,年龄,头发的颜色,地址,电话号码和国家
user = {"name" : "ABC",
"age" : 25,
"hair color" : "brown",
"address" : "XYZ",
"phone number" : 1234567890,
"country" :"Canada"
}
而且,如果我们有一个同名的索引和数据库使用查询,
db.users.find({"name" : "ABC"});
在这里,由于我们在名称字段上有一个索引,所以查询优化器将使用该索引作为性能优化方法。
假设您查询其他字段的数据库。比方说,解决
db.users.find({"address" : "XYZ"});
这里查询优化很想缩短响应时间查询,但由于它具有对集合中的记录中没有任何先验信息,它要经过的每一个文件该集合查看该文档的地址字段是否与查询中的地址字段匹配。如果确实如此,那么我们将返回该文档。我相信你知道这是索引的来源,因为它通过按照特定标准对文档进行“分组”来维护指针。
欲了解更多信息,你可以看看here。
对于您的问题,使用B树游标的查询会避免执行集合扫描,因此使用除基本游标“主要”之外的任何类型的游标进行查询都可避免集合扫描。
即使在正在查询的字段上存在索引,也可以强制执行收集扫描。你可以阅读有关它here
相关问题
- 1. MongoDB描述集合
- 2. 什么是VGA编程中的“扫描”?
- 3. 什么是扫描:Java中的块?
- 4. 什么是PNO的区别扫描和WLAN预设扫描?
- 5. 如何确定是否已在MongoDB中完成完整集合扫描
- 6. greenplum中的表扫描和seq扫描有什么区别
- 7. 什么是“扫描工作副本”
- 8. 索引搜索与聚集索引扫描 - 为什么选择扫描?
- 9. 什么是MongoDB中的集群?
- 10. 描述RFID卡扫描动作的正确术语是什么?
- 11. MongoDB中的$ cmd集合是什么?我如何使用它?
- 12. 表扫描和聚簇索引扫描有什么区别?
- 13. 为什么QO选择聚簇索引扫描与表扫描?
- 14. 主动扫描和被动扫描有什么区别?
- 15. 什么是在MongoDB中相当于Solr集合?
- 16. 为什么MongoDB具有集合
- 17. 为什么我的查询执行聚集索引扫描
- 18. 为什么在我的聚集索引上有扫描?
- 19. KeyedCollection是什么的集合?
- 20. 集合的逆是什么?
- 21. Go的bufio.Scanner中的“扫描是否将扫描仪推进到下一个标记”是什么意思?
- 22. MongoDB的Java的异步驱动程序:什么是从集合
- 23. 堆中的并发标记扫描生成是什么?
- 24. 什么是查询计划中的“位图堆扫描”?
- 25. 为什么Hbase stoprow在扫描中是独占的?
- 26. 网络扫描中“偏差”的含义是什么?
- 27. MongoDB中查找()全扫描与指数
- 28. postgres中的Seq扫描和位图堆扫描有什么区别?
- 29. $ exists查询是否比扫描整个集合更快?
- 30. 什么是动态设置mongodb集合名称的rsyslog语法?
“如果您的查询使用B树光标它是由定义不扫描集合” - 是它始终是真的吗?例如; B树光标只能用于'排序'阶段,并且查询仍可能最终为'查找'阶段执行集合扫描。 – aquaraga