我有一个查询语句的执行时间非常长。查询语句:
db.legs.find(
{
effectiveDate: {$lte: startDate},
discontinuedDate: {$gte: startDate}
}
).count()
以下是我的日志输出:
2016-11-21T08:58:50.470-0800 I COMMAND [conn2] command myDB.legs
command: count { count: "legs", query: { effectiveDate: { $lte: new Date(1412121600000) }, discontinuedDate: { $gte: new Date(1412121600000) } }, fields: {} }
planSummary: IXSCAN { discontinuedDate: 1 } keyUpdates:0 writeConflicts:0 numYields:82575 reslen:47 locks:{ Global: { acquireCount: { r: 165152 } }, MMAPV1Journal: { acquireCount: { r: 82576 } }, Database: { acquireCount: { r: 82576 } }, Collection: { acquireCount: { R: 82576 } } } protocol:op_command 13940ms
我在{effectiveDate: 1, discontinuedDate: 1}
上建立了索引,并使用IXSCAN
获取数据。 我想知道是否有人能提出任何加速此查询的方法? 在这种情况下,IXSCAN
不是我们可以期望的最快操作吗?
explain
方法告诉我们什么?db.legs.explain(1).find({effectiveDate: {$lte:...
这是你查询的其余部分。 - Alex Blex