mongodb的and查询

假设db.find({a:1,b:1,c:1}),满足条件a的文档有100万条,满足条件b的文档有70万条,满足条件c的有30万条,这三个字段都没有索引,进行全表扫描,那么find({a:1,b:1,c:1})和find({c:1,b:1,a:1}),and条件连接中字段顺序不一样,这二者查询速度是否会不一样,还是说不管条件字段谁写在前面谁写在后面对mongodb都一样?

阅读 1.6k
1 个回答
  • 都没有索引的情况下只有一个执行计划:COLLSCAN(全表扫描),所以一定是把每条记录拿出来比一遍ABC是不是都满足然后得出结果,跟有多少条件无关。
  • 有索引部分覆盖条件的情况下系统会挑它认为最优的索引,在其结果上再扫描得出的文档,看是不是满足其他条件。
  • 如果索引正好能够覆盖全部条件,那索引直接就可以给出结果(最优情况)。

无论哪种,都不存在你想的先查一个条件,再查一个条件,再……不可能有那样的执行计划,太浪费。所以条件的顺序其实是无关的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进