欠落インデックスの警告
定義
MongoDB for IntelliJ プラグインは、アプリケーションクエリがインデックスを使用しているかどうかを調べます。クエリがインデックスを使用しない場合、プラグインはそのクエリに対する警告を表示します。
警告を解決するには、クエリのインデックスを作成することを検討してください。
インデックスを追加する前に、次の点を考慮してください。
クエリは、読み取りを高速化するために書込みパフォーマンスを低下させるのに十分な頻度で実行されます。
クエリを変更して、既存のインデックスを使用できます。
インデックスの警告を無効にすることもできます。
インデックスの詳細については、「 インデックスの作成 」を参照してください。
例
次のJavaコード スニペットの例では、 awards
ドキュメントフィールドが クエリで使用されていますが、そのフィールドはデータベースでインデックスされていません。
client.getDatabase( "sample_mflix" ).getCollection( "movies" ).find( Filters.ne( "awards", "Comedy" ) )
プラグインに次の警告が表示されます。
This query will run without an index. If you plan on using this query heavily in your application, you should create an index that covers this query. Implement an Index
インデックスの作成
クエリのインデックスを作成するには、プラグインで警告とともに表示される Implement an Index リンクをクリックします。
次に、プラグインはインデックスを作成するためのテンプレート コードを含む Database Explorer Playgrounds 画面を表示します。テンプレート コードには、インデックスを作成する潜在的なフィールドを示すコメントも含まれています。例、次のコードの最初の行は、awards
フィールドがインデックス化できることを示しています。
// Potential fields to consider indexing: awards // Learn about creating an index: https://www.mongodb.com/ja-jp/docs/v7.0/core/data-model-operations/#indexes db.getSiblingDB("sample_mflix").getCollection("movies"). createIndex({"<your_field_1>": 1})
フィールドのインデックスを作成するには、例コードでcreateIndex()
awards
<your_field_1>
をawards
に設定し、Database
Explorer Playgrounds 画面で メソッドを実行します。 (例: )。
db.getSiblingDB("sample_database").getCollection("movies"). createIndex({"awards": 1})
インデックスの無効化警告
プラグインでインデックス警告を無効にするには、以下の手順を行います。
IntelliJ IDEA システム メニューを開き、Settings をクリックします。
Editorを展開します。
[Inspections] をクリックします。
MongoDBを展開します。
Probable bugsを展開します。
Query does not use an indexを無効にします。