この記事では、MongoDBインデックスがクエリパフォーマンスを強化する方法について説明します。 db.collection.createindex()を使用してインデックス作成の詳細、さまざまなインデックスタイプ(単一フィールド、マルチケイ、ハッシュ、地理空間、テキスト)について説明し、mのメソッドを提供します
MongoDBインデックスは、データの取得を高速化する方法でコレクションのデータのごく一部を保存する特別なデータ構造です。それらは、リレーショナルデータベースのインデックスと同様に動作し、MongoDBがコレクション全体をスキャンすることなく特定のクエリ基準に一致するドキュメントをすばやく見つけることができます。これは、大規模なコレクションにとって特に有益です。インデックスを効果的に使用するには、それらがどのように機能し、どのように適切に作成するかを理解する必要があります。
コアコンセプトはfind()
クエリで頻繁に使用されるフィールドにインデックスを作成することです。たとえば、 username
フィールドに基づいてドキュメントを頻繁にクエリする場合、 username
でインデックスを作成すると、クエリのパフォーマンスが大幅に向上します。 db.collection.createIndex()
メソッドを使用してインデックスを作成します。たとえば、 users
と呼ばれるコレクションにusername
フィールドに単一フィールドインデックスを作成するには:
<code class="javascript">db.users.createIndex( { username: 1 } )</code>
1
は昇順を示します。 -1
降順注文を指定します。複数のフィールドを含む複合インデックスを作成できます。これは、複数の基準を使用するクエリに特に役立ちます。たとえば、 username
とage
をインデックスするには:
<code class="javascript">db.users.createIndex( { username: 1, age: -1 } )</code>
このインデックスは、 username
でフィルタリングしてからage
でフィルタリングするクエリに対して効率的になります。複合指数のフィールドの順序が重要です。データベースは、最適化のために指定された順序でフィールドを使用します。インデックスの選択性を考慮することを忘れないでください。非常に一意の値を持つフィールド上のインデックスは、パフォーマンスの利点をあまり提供しない場合があります。
MongoDBはいくつかのインデックスタイプを提供し、それぞれ異なるクエリパターンに適しています。
tags
配列がある場合、 tags
のマルチキーインデックスは、特定のタグを含むドキュメントの効率的なクエリを許可します。適切なインデックスタイプを選択すると、クエリパターンに完全に依存します。最も頻繁なクエリを分析して、フィルタリング操作で最も一般的に使用されるフィールドを決定し、それに応じて適切なインデックスタイプを選択します。
MongoDBは、インデックスの有効性を監視し、インデックス作成から恩恵を受ける可能性のあるクエリを特定するためのいくつかのツールを提供します。
db.collection.stats()
:このコマンドは、インデックス使用量を含むコレクションに関する統計を提供します。 indexDetails
セクションを見て、どのインデックスが頻繁に使用され、どのインデックスが使用されていないかを確認してください。使用量が少ない場合は、不必要なインデックスを示唆する場合があります。explain()
:クエリを使用してexplain()
メソッドを使用して、MongoDBがクエリをどのように実行したか、およびインデックスを使用したかどうかを理解します。出力には、使用されたインデックス(存在する場合)や調査したドキュメントの数など、実行計画の詳細が表示されます。クエリがインデックスを使用せずにコレクションの大部分をスキャンする場合、インデックス最適化の候補者です。これらのメトリックを定期的に分析することにより、パフォーマンスの低いクエリを識別し、適切なインデックスを作成して実行時間を最適化できます。
ゆっくりとしたmongodbクエリのトラブルシューティングには、体系的なアプローチが含まれます。
explain()
を使用して、インデックスが使用されているかどうかを確認します。クエリとインデックスの使用法を分析した後、欠落または非効率的なインデックスが遅いパフォーマンスの原因であると判断し、必要に応じてインデックスを作成または変更します。アプリケーションに対するインデックス変更の影響を徹底的にテストすることを忘れないでください。すべての遅いクエリがインデックスを追加することで解決されるわけではありません。時には、クエリ自体の最適化またはリソースの制約への対処が必要です。
以上がMongoDBのインデックスを使用してクエリパフォーマンスを改善するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。