关于Mongo查询性能的一般问题和查询参数的顺序。
我们有一个用于存储“文件”元数据的集合,其中包括文件名和文件状态(整数代码值)。集合中只有少数同名的文件(最多只有几十个),但是有数千个文件具有相同的状态。
如果存在类似以下结构的Mongo查询:
db.getCollection('files').find( {
'$and': [
{ 'name': 'someFileName.csv' },
{ 'status': { '$in': [ 12, 6 ] } }
]
})...would它的执行方式与格式化如下的相同查询有任何不同:
db.getCollection('files').find( {
'$and': [
{ 'status': { '$in': [ 12, 6 ] } },
{ 'name': 'someFileName.csv' }
]
})也就是说:$and子句参数的顺序重要吗?场景#1会比场景#2更好吗,因为理论上,文件名搜索会消除除少数几条记录之外的所有记录?还是蒙戈在掩护下以这种方式运作?
发布于 2018-06-22 18:57:56
不,查询中字段的顺序并不重要。
此外,由于查询字段是隐式"anded",这些字段还相当于:
db.getCollection('files').find( {
'status': { '$in': [ 12, 6 ] },
'name': 'someFileName.csv'
})和
db.getCollection('files').find( {
'name': 'someFileName.csv',
'status': { '$in': [ 12, 6 ] }
})在确定执行查询的最佳方式时,查询分析器对它们都进行了相同的处理。
https://stackoverflow.com/questions/50993109
复制相似问题