Mongodb 参数顺序对Mongo查询性能的影响?
关于Mongo查询性能和查询参数顺序的一般问题 我们有一个用于存储文件元数据的集合,其中包括文件名和文件整型代码值的状态。集合中只有少量文件具有相同的名称,最多可能有几十个,但是可能有数千个文件具有相同的状态 如果存在类似以下结构的Mongo查询:Mongodb 参数顺序对Mongo查询性能的影响?,mongodb,performance,Mongodb,Performance,关于Mongo查询性能和查询参数顺序的一般问题 我们有一个用于存储文件元数据的集合,其中包括文件名和文件整型代码值的状态。集合中只有少量文件具有相同的名称,最多可能有几十个,但是可能有数千个文件具有相同的状态 如果存在类似以下结构的Mongo查询: db.getCollection('files').find( { '$and': [ { 'name': 'someFileName.csv' }, { 'status': { '$in': [ 12,
db.getCollection('files').find( {
'$and': [
{ 'name': 'someFileName.csv' },
{ 'status': { '$in': [ 12, 6 ] } }
]
})
db.getCollection('files').find( {
'$and': [
{ 'status': { '$in': [ 12, 6 ] } },
{ 'name': 'someFileName.csv' }
]
})
…它是否会执行与以下格式相同的查询不同的操作:
db.getCollection('files').find( {
'$and': [
{ 'name': 'someFileName.csv' },
{ 'status': { '$in': [ 12, 6 ] } }
]
})
db.getCollection('files').find( {
'$and': [
{ 'status': { '$in': [ 12, 6 ] } },
{ 'name': 'someFileName.csv' }
]
})
也就是说:$and子句参数的顺序是否重要?场景1的性能会比场景2好吗?因为理论上,文件名搜索会消除除少数记录之外的所有记录?或者Mongo是否在后台以这种方式运行?不,查询中字段的顺序并不重要 此外,由于查询字段是隐式AND,因此这些字段也相当于:
db.getCollection('files').find( {
'status': { '$in': [ 12, 6 ] },
'name': 'someFileName.csv'
})
及
在确定执行查询的最佳方式时,查询分析器对它们都一视同仁。请分享信息来源