一部のクエリは、クエリ内の唯一のフィールドがインデックス付きフィールドである場合でも、比較的小さなコレクション (~200K ドキュメント) で疑わしいほど遅くなりました。例 (Java ドライバーを使用):
eventReportColl.distinct("host").size()
ホストにインデックスが作成されている場合でも、約3 秒かかり、シェルcoll.distinct("host").length
では約 2秒かかります。
coll.getIndexes()
...
{
"v" : 1,
"key" : {
"host" : 1
},
"ns" : "db.event_reports",
"name" : "host_1"
}
上記のクエリがホスト インデックスを使用しない理由はありますか? 残念ながら、explain() が個別に機能するようには見えないため、これが原因であるとしか考えられません。これは、MongoLab で実行されている v2.2.4 にあります。(また、2 秒または 3 秒は大したことではないように思えるかもしれませんが、返される前にこれらのタイプのクエリを 3 つか 4 つ実行する API があると、合計されます...最終的な db サイズの増加は言うまでもありません)。インデックスの使用を強制する方法や、count クエリを高速化する方法はありますか?