私はRuby(1.9.3)アプリケーションでMongoDB 2.0.3(Mongoid経由)を使用しています。インデックスを使用しないMongodbクエリ
私は次のようになり、複合インデックスがあります。
index [
[:attr1, Mongo::ASCENDING],
[:attr2, Mongo::ASCENDING],
[:attr3, Mongo::ASCENDING],
[:attr4, Mongo::ASCENDING]
]
とのように見えるのクエリ:
Model.where(:attr3.ne => true, :attr4.ne => true).
extras(:hint => { :attr1 => Mongo::ASCENDING,
:attr2 => Mongo::ASCENDING,
:attr3 => Mongo::ASCENDING,
:attr4 => Mongo::ASCENDING })
はその後、私のコードは、結果を修正し、それらを更新します。私は上記のrubyアプリケーションを実行するいくつかのプロセスを持っており、すべてmongodbサーバを保存しています。私は非常に大規模なデータベース(30milのレコード、95gbのサイズ以上)を持っており、常に私のアプリケーションで読み書きされています。
インデックスがインデックスを使用することがあり、時には(mongoシェルのdb.currentOp()を使用して)インデックスが使用されないという問題が発生しています。なぜそれが起こっているのですか?どうすれば修正できますか?
説明をいただきありがとうございます。 – gylaz