2012-05-02 12 views
0

質問は非常に単純なものです。コレクション内に複数のインデックスを持つことはできますか?私はできると思いますが、複数のインデックスを検索するたびに、複合インデックスについての説明があり、それは私が探しているものではありません。mongodbで異なる定義を持つ複数のインデックス

私がしたいのは、2つの簡単な別々のインデックスがあることを確認することです。 (私はPHPを使用していて、私はフォーマットするPHPのコードを使用しますが、私は一度に一つのインデックスを検索します

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

を理解しています。

複合インデックスは、私は何ではありませんので、探している:。

  1. 1インデックスがユニークであり、他ではありません

  2. 私は最速のオプションであることを行っていないと思う(目を理解するためのリンクを開きます。私がそれが遅くなると思う理由。 link

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

答えて

2

あなたはインデックスを持っているように定義できます。 MongoDB documentationから:

インデックスはいくつですか?索引を使用すると、順序付き順次検索を含むキーによる検索が非常に高速になります。 MongoDBが非常に迅速に更新する文書を見つけることができるので、キーによる更新も高速です。ただし、作成された各索引では、挿入および削除に一定のオーバーヘッドが追加されることに注意してください。ベースコレクションにデータを書き込むことに加えて、キーをBツリーインデックスに追加する必要があります。したがって、索引は、読取り数が書込み数よりもはるかに大きいコレクションに最適です。書き込みが集中するコレクションの場合、索引は場合によっては非生産的な場合があります。ほとんどのコレクションは読み込み集約型なので、ほとんどの状況でインデックスは良いことです。

また、両方のフィールドを使用するクエリの実行については、how Mongo will decide what index to useを参照することをお勧めします。

また、Indexing Advice and FAQページもご覧ください。 only one index per queryselectivityなどのようなものを説明します。

p.s. 10genのこのslideshare deckは、コレクションごとに40個のインデックスがあることを示しています。

+0

ありがとうございます。例では、2つの索引を順番に見たことはありません。 (同じスクリプトで)。私はちょうど確信したかった。余分な情報もありがとう、それは非常に便利になります。 –

+0

MongoDBの情報をお寄せいただきありがとうございます。コレクションごとに40のインデックスを持つことができます。 – The6thSense

関連する問題