MongoDB 有两个索引哪个查询更快
Which query faster on MongoDB with two index
我在 mongodb 中有两个索引。第一个索引字段是“字符串”,第二个索引字段是“日期”。字符串字段是部分的。为什么只有“字符串”比我用“日期”字段查询“字符串”快?我如何创建替代方案?
在 2 亿个值中:
第一次查询:db.runCommand({explain:{count:"mycollection",query:{fruit:"apple"}}});
查询结果:{executionTimeMillis: 80,nCounted: 39509}
第二个查询:db.runCommand({explain:{count:"mycollection",query:{fruit:"apple",date:{$gte:ISODate('2022-03-22T00:00:00.000+00:00')}}}});
查询结果:{executionTimeMillis: 3402,nCounted: 22383}
我是分开用的
正如@R2D2 所说:
db.mycollection.createIndex({fruit: 1,date:-1},{partialFilterExpression:{fruit:{$exists: true }}});
使用该方法使其速度更快。索引大小也几乎减少了一半。
我在 mongodb 中有两个索引。第一个索引字段是“字符串”,第二个索引字段是“日期”。字符串字段是部分的。为什么只有“字符串”比我用“日期”字段查询“字符串”快?我如何创建替代方案?
在 2 亿个值中:
第一次查询:db.runCommand({explain:{count:"mycollection",query:{fruit:"apple"}}});
查询结果:{executionTimeMillis: 80,nCounted: 39509}
第二个查询:db.runCommand({explain:{count:"mycollection",query:{fruit:"apple",date:{$gte:ISODate('2022-03-22T00:00:00.000+00:00')}}}});
查询结果:{executionTimeMillis: 3402,nCounted: 22383}
我是分开用的
正如@R2D2 所说:
db.mycollection.createIndex({fruit: 1,date:-1},{partialFilterExpression:{fruit:{$exists: true }}});
使用该方法使其速度更快。索引大小也几乎减少了一半。