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都一样?

小怪兽爱吃肉
浏览 781回答 1
1回答

胡子哥哥

都没有索引的情况下只有一个执行计划:COLLSCAN(全表扫描),所以一定是把每条记录拿出来比一遍ABC是不是都满足然后得出结果,跟有多少条件无关。有索引部分覆盖条件的情况下系统会挑它认为最优的索引,在其结果上再扫描得出的文档,看是不是满足其他条件。如果索引正好能够覆盖全部条件,那索引直接就可以给出结果(最优情况)。无论哪种,都不存在你想的先查一个条件,再查一个条件,再……不可能有那样的执行计划,太浪费。所以条件的顺序其实是无关的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MongoDB