MongoDB インデックス
インデックスを使用すると、通常、クエリの効率が大幅に向上します。インデックスがないと、MongoDB はデータを読み取るときにコレクション内の各ファイルをスキャンし、クエリ条件を満たすレコードを選択する必要があります。
コレクション全体をスキャンするクエリの効率は非常に低く、特に大量のデータを処理する場合、クエリには数十秒、場合によっては数分かかる場合があり、これは Web サイトのパフォーマンスにとって非常に致命的です。
インデックスは、簡単に走査して読み取ることができるデータ コレクションに保存される特別なデータ構造です。
ensureIndex () メソッド
MongoDB インデックスを作成するには、ensureIndex() メソッドを使用します。
構文
ensureIndex() メソッドの基本構文形式は次のとおりです:
>db.COLLECTION_NAME.ensureIndex({KEY:1})
構文の Key 値は作成するインデックス フィールドです。1 は、必要に応じて昇順でインデックスを作成することを指定することを意味します。降順でインデックスを作成します。-1 を指定すれば十分です。
例
>db.col.ensureIndex({"title":1}) >
ensureIndex() メソッド 複数のフィールドを使用してインデックス (リレーショナル データベースでは複合インデックスと呼ばれます) を作成するように設定することもできます。
>db.col.ensureIndex({"title":1,"description":-1}) >
ensureIndex() はオプションのパラメーターを受け取ります。 オプションのパラメーターのリストは次のとおりです。
Parameter | Type | Description |
---|---|---|
background | Boolean | インデックス構築プロセスは、バックグラウンドでインデックスを作成する、つまり「バックグラウンド」を追加するように指定できる他のデータベース操作をブロックします。 オプションのパラメータ。 「背景」のデフォルト値はfalseです。 |
unique | Boolean | 作成されたインデックスが一意であるかどうか。一意のインデックスを作成するには true を指定します。デフォルト値は false です。 |
name | string | インデックスの名前。指定しない場合、MongoDB はインデックスのフィールド名と並べ替え順序を連結してインデックス名を生成します。 |
dropDups | Boolean | 一意のインデックスを作成するときに重複レコードを削除するかどうか、一意のインデックスを作成する場合は true を指定します。デフォルト値は false です。 |
sparse | Boolean | このパラメータが true に設定されている場合は、特別な注意が必要です。インデックス付きフィールドでクエリされる、対応するフィールドを含むドキュメント。デフォルト値は false です。 |
expireAfterSeconds | integer | TTL 設定を完了し、コレクションの存続時間を設定するには、秒単位で値を指定します。 |
v | index version | インデックスのバージョン番号。デフォルトのインデックスのバージョンは、インデックスの作成時に mongod が実行されていたバージョンによって異なります。 |
weights | document | インデックスの重み値。値は 1 ~ 99,999 で、他のインデックス フィールドと比較したインデックスのスコアの重みを示します。 |
default_ language | string | テキストのインデックス作成の場合、このパラメータはストップワードのリストと語幹とトークナイザーのルールを決定します。 デフォルトは English |
language_override | string | テキスト インデックスの場合、このパラメータは、デフォルトの言語をオーバーライドします。デフォルト値は language. |
db.values.ensureIndex({open: 1, close: 1}, {background: true})インデックス作成時にbackground:trueオプションを追加することで、バックグラウンドで作成作業が実行されます