MySQLの複合インデックスを使用して低速クエリを高速化
-
複合インデックスは、複数の列で使用されるインデックスです。
-
複数列のインデックスとも呼ばれます。
-
MySQLを使用すると、ユーザーは最大16列で構成できる複合インデックスを作成できます。
-
クエリオプティマイザは、インデックス内のすべての列をテストするクエリに複合インデックスを使用します。
-
また、最初の列、最初の2列などをテストするクエリにも使用できます。
-
インデックス定義で列が正しい順序で指定されている場合、同じテーブルで特定の種類のクエリを高速化する単一の複合インデックスを使用できます。
テーブルの作成中に、複合インデックスを作成する方法を見てみましょう。以下のステートメントを使用して実行できます-
クエリ
CREATE TABLE table_name ( c1 data_type PRIMARY KEY, c2 data_type, c3 data_type, c4 data_type, INDEX index_name (c2,c3,c4) );
上記のステートメントでは、複合インデックスは3つの列c2、c3、およびc4で構成されています。
複合インデックスは、「CREATEINDEX」ステートメントを使用して既存のテーブルに追加することもできます。これがどのように行われるか見てみましょう-
クエリ
CREATE INDEX index_name ON table_name(c2,c3,c4);
コンポジットインデックスを使用してsloqクエリを高速化する方法を見てみましょう-
-
クエリの実行速度は、その継続時間によって異なります。
-
インデックスヒントを使用すると、クエリ速度が向上します。
-
MySQLオプティマイザを使用して、インデックスを選択する際に正しい決定を下すことができます。
-
ただし、これは静的クエリでのみ実行する必要があります。
-
「WHERE」句が変更された場所にクエリを追加すると、オプティマイザがその役割を果たせなくなるため、クエリのパフォーマンスが低下します。
-
「FORCEINDEX」ステートメントは「USEINDEX(index_list)」のように機能しますが、テーブルスキャンはコストのかかるタスクと見なされます。
-
テーブルスキャンは、名前付きインデックスを使用してテーブル内の行を検索する方法がない場合にのみ必要です。
-
MySQLでのユーザー定義変数の使用
ユーザー変数とは何か、MySQLでどのように使用できるかを理解しましょう。ルールも表示されます- ユーザー変数は@var_nameとして記述されます。ここで、「var_name」は、英数字、。、_、および$で構成される変数名を指します。 ユーザー変数名は、文字列または識別子として引用されている場合、他の文字を含めることができます。 ユーザー定義変数はセッション固有です。 1つのクライアントによって定義されたユーザー変数は、他のクライアントには表示または使用できません。 ただし、唯一の例外は、ユーザーがPerformance Schemauser_variables
-
MySQLコンポジットインデックス
複合インデックスは、複数の列で使用されるインデックスです。複数列のインデックスとも呼ばれます。 機能 機能を見てみましょう- MySQLを使用すると、ユーザーは最大16列で構成できる複合インデックスを作成できます。 クエリオプティマイザは、インデックス内のすべての列をテストするクエリに複合インデックスを使用します。 また、最初の列、最初の2列などをテストするクエリにも使用できます。 インデックス定義で列が正しい順序で指定されている場合、同じテーブルで特定の種類のクエリを高速化する単一の複合インデックスを使用できます。 複合インデックスの作成 テーブルの作成中に、