0

質問は非常に単純です。コレクションに複数のインデックスを含めることはできますか。できると思いますが、複数のインデックスを検索するたびに、複合インデックスの説明が表示されますが、それは私が探しているものではありません。

私がやりたいのは、2つの単純な別々のインデックスを持つことができることを確認することです。(私はPHPを使用しています。PHPコードのフォーマットを使用しますが、理解しています

db.posts.ensureIndex({ my_id1: 1 }, {unique: true, background: true});
db.posts.ensureIndex({ my_id2: 1 }, {background: true});

一度に1つのインデックスのみを検索します。

複合インデックスは、私が探しているものではありません。理由は次のとおりです。

  1. 1つのインデックスは一意であり、もう1つは一意ではありません。

  2. 最速の選択肢にはならないだろうと思います。(リンクを開いて、遅くなると思う理由を理解してください。リンク

インデックスが機能することを確認したいだけです。

4

1 に答える 1

3

確かに、インデックスを自分のやり方で定義することができます。MongoDBドキュメントから:

インデックスはいくつですか?インデックスは、順序付けられた順次検索を含む、キーによる検索を非常に高速にします。MongoDBは更新するドキュメントを非常に迅速に見つけることができるため、キーによる更新も高速です。ただし、作成された各インデックスは、挿入と削除にある程度のオーバーヘッドを追加することに注意してください。ベースコレクションへのデータの書き込みに加えて、キーをBツリーインデックスに追加する必要があります。したがって、インデックスは、読み取りの数が書き込みの数よりもはるかに多いコレクションに最適です。書き込みが集中するコレクションの場合、場合によっては、インデックスが逆効果になることがあります。ほとんどのコレクションは読み取りを多用するため、ほとんどの状況でインデックスは適切です。

また、両方のフィールドを通過するクエリを実行する場合に、Mongoが使用するインデックスをどのように決定するかを確認することをお勧めします。

また、インデックス作成のアドバイスとFAQページもご覧ください。クエリごとに1つのインデックスのみ選択性などについて説明します。

ps 10genのこのslideshareデッキは、コレクションごとに40のインデックスの制限があることを示唆しています。

于 2012-05-02T21:15:36.850 に答える