MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBの大規模コレクションで検索が遅い?インデックス作成による高速化の方法

MongoDBでコレクションのデータ量が増えてくると、検索速度が低下する問題に直面することがあります。このような場合、最も効果的な解決策はインデックス(index)を作成することです。インデックスを使用すると、コレクション全体をスキャンする必要がなくなり、クエリのパフォーマンスが大幅に向上します。

インデックスの作成方法

インデックスを作成するには、createIndex()メソッドを使用します。まず、サンプルとなるコレクションとドキュメントを作成してみましょう。

> db.demo661.createIndex({ListOfName:1});
{
    "createdCollectionAutomatically" : true,
    "numIndexesBefore" : 1,
    "numIndexesAfter" : 2,
    "ok" : 1
}

上記のコマンドでは、ListOfNameフィールドに対して昇順(1)のインデックスを作成しています。createdCollectionAutomatically: trueは、コレクションが存在しなかったため自動的に作成されたことを示しています。

ドキュメントの挿入

次に、insertOne()メソッドを使ってドキュメントをいくつか挿入します。

> db.demo661.insertOne({_id:1,ListOfName:["John","Robert","David"]});
{ "acknowledged" : true, "insertedId" : 1 }
> db.demo661.insertOne({_id:2,ListOfName:["Mike","Sam"]});
{ "acknowledged" : true, "insertedId" : 2 }
> db.demo661.insertOne({_id:3,ListOfName:["John","David","Bob"]});
{ "acknowledged" : true, "insertedId" : 3 }

登録したドキュメントの確認

find()メソッドを使用すると、コレクション内のすべてのドキュメントを表示できます。

> db.demo661.find();

実行結果は以下の通りです。

{ "_id" : 1, "ListOfName" : [ "John", "Robert", "David" ] }
{ "_id" : 2, "ListOfName" : [ "Mike", "Sam" ] }
{ "_id" : 3, "ListOfName" : [ "John", "David", "Bob" ] }

$all演算子を使った検索クエリ

次に、配列フィールドに対して複数の値を条件として検索するクエリを実行します。$all演算子を使用すると、指定したすべての要素を含むドキュメントのみを取得できます。

> db.demo661.find({"ListOfName": {"$all":["John","David"]}});

このクエリは、「John」と「David」の両方を含むドキュメントを返します。

{ "_id" : 1, "ListOfName" : [ "John", "Robert", "David" ] }
{ "_id" : 3, "ListOfName" : [ "John", "David", "Bob" ] }

まとめ

大規模なコレクションでの検索が遅い場合は、検索対象のフィールドにインデックスを作成することで解決できます。特に配列フィールドへのインデックス(マルチキーインデックス)は、$all$inなどの配列演算子を使ったクエリの高速化に有効です。ただし、インデックスを追加しすぎると書き込み性能に影響が出るため、実際のクエリパターンに合わせて必要なインデックスだけを作成することをおすすめします。

  1. Windows 10/11でMicrosoft Edgeが遅い・重いときの対処法5選

    Windows 10や11では、MicrosoftがEdgeを標準ブラウザとして強く推しています。実際に乗り換えた方も多いのではないでしょうか。EdgeはChromiumベースのため、Google Chromeとよく似た使い心地で、違和感なく移行できるはずです。最新のMicrosoft Edgeには、スリープタブやタブグループなど、生産性や作業効率を高める便利な機能が多数搭載されています。しかし、こうした新機能や設定次第では、かえって動作が重くなるケースもあります。もしEdgeの動きが遅くて困っているなら、以下の対処法を順番に試してみてください。Windows 10/11 PCでMicroso

  2. 遅くて遅れているWindows10システムを修正する方法

    Windows 10は優れており、Microsoftがそれをさらに改善するために多くの更新をプッシュしていることは間違いありません。しかし、多くのユーザーは、Windows 10の速度が遅く、遅れていることに定期的に不満を持っています。多くのWindows 10ユーザー、または他のWindows OSを使用しているユーザーでさえ、コンピューターの速度が遅いという問題に直面することは間違いありません。 Windowsの新しいコピーをインストールしたとき、または箱から出してすぐに、マシンが非常に高速であったことに気付くでしょう。しかし、今あなたのマシンは本当に遅いです。このマシンの遅延によって大き