MongoDBの検索が遅いときのIndex作成方法

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

以下のQueryを例にする。

db.test_collection.find({ "content.a" : "aaaa", "content.sub_content.b" : "bbbb", "sex" : "male" }).sort({ "createdAt" : -1 }).limit(30)

Indexを作成するときはRDBと同じく以下を考慮する。

  • 最初に検索条件、次に並べ替え順序(上記の場合、検索条件は”content.a”, “content.sub_content.b”, “sex”、並べ替え順序は”createdAt”)
  • find関数の実行速度を考慮し、検索条件は大きく検索対象を絞り込めるものから指定(上記の場合、”sex”(性別)はnullを含めても値が3種類しかないので指定を後回しにする)
  • 並べ替え順序はクエリーが指定している順(上記の場合、並べ替えは”createdAt”の降順のみであるが、複数指定されている場合はその順番に指定)

実際の手順としては以下の通り。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.