6

MongoDB についていくつか質問があります。

(1) 索引付けは投影に役立ちますか?

(2) コレクションに多数のインデックスを割り当て、並べ替えで検索を実行しようとした後、 を使用すると、並べ替えられたフィールドにインデックスがexplain表示されます。BtreeCursor

検索に役立った最後のインデックスのみが表示されているため、他のインデックスがクエリ部分で役立ち、explainそれを表示しなかった可能性がありますか?

またはexplain、クエリ、並べ替えなどを支援するすべてのインデックスを表示する必要がありますか?

ありがとう。

4

1 に答える 1

8

インデックス作成は予測に役立ちますか?

それが本当に役立つのは(パフォーマンスなどによって定義される)唯一の場合は、クエリが「カバー」されている場合だと思います:http://docs.mongodb.org/manual/tutorial/create-indexes-to-support-queries/

たとえば、 をクエリし{d:1, e:2}て get backしたい場合{_id, t, e}は、次のようにします。

db.t.ensureIndex({d:1 , e:1, _id:1, t:1});
db.t.find({d:1, e:2}, {_id:1, t:1, e:1});

そして、そのクエリのexplain()出力はindexOnlytrue として表示され、ディスクからドキュメントをロードして応答を返さなかったことを意味します。

そうです、インデックスは特定の状況下での予測に役立ちます。

コレクションに多数のインデックスを割り当て、並べ替えで検索を実行しようとした後、説明を使用すると、並べ替えられたフィールドに BtreeCursor インデックスが表示されます。

はい、そうです。

他のインデックスがクエリ部分で役立ち、検索に役立った最後のインデックスのみが表示されているため、説明が表示されなかった可能性がありますか?

インデックスの交差の被害者である場合は、 を使用して、使用explain(true)されたすべてのインデックス プランを表示します。

交差を伴う検索と並べ替えには個別のインデックスが使用されないことに注意してください。したがって、ここでの答えは実際には「いいえ」です。 -選別

于 2014-12-04T08:53:43.617 に答える