假设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 回答
胡子哥哥
TA贡献1825条经验 获得超6个赞
都没有索引的情况下只有一个执行计划:COLLSCAN(全表扫描),所以一定是把每条记录拿出来比一遍ABC是不是都满足然后得出结果,跟有多少条件无关。
有索引部分覆盖条件的情况下系统会挑它认为最优的索引,在其结果上再扫描得出的文档,看是不是满足其他条件。
如果索引正好能够覆盖全部条件,那索引直接就可以给出结果(最优情况)。
无论哪种,都不存在你想的先查一个条件,再查一个条件,再……不可能有那样的执行计划,太浪费。所以条件的顺序其实是无关的。
- 1 回答
- 0 关注
- 810 浏览
添加回答
举报
0/150
提交
取消