私はかなり長い実行時間を見ているクエリを持っています。クエリ:IXSCANのパフォーマンスを改善しますか?
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
はこの状況で私たちが期待できる最速の操作ではありませんか?
「説明する」とは何ですか? 'db.legs.explain(1).find({effectiveDate:{$ lte:...残りのクエリ}'? –
@AlexBlexかなり長いですが、ここで見ることができます: http://pastebin.com/ wknw8AMm –
あなたのindecesは何ですか? – hyades