インデックスのマージは、MySQL が最下層で提供するインテリジェントなアルゴリズムです。インデックスマージアルゴリズムを理解すると、より優れたインデックスを作成するのに役立ちます。 インデックス マージは、複数の範囲スキャンを実行し、その結果セットをマージすることで行を取得します。複数のテーブルにわたるインデックス スキャンではなく、単一のテーブルからのインデックス スキャンのみがマージされます。マージにより、結合、交差、交差の結合 (最初に交差してからマージ) という 3 つの形式の基礎スキャンが生成されます。 次の 4 つの例では、インデックスのマージが行われます。 SELECT * FROM tbl_name WHERE key1 = 10 OR key2 = 20; SELECT * FROM tbl_name WHERE (key1 = 10 OR key2 = 20) AND non_key = 30; SELECT * FROM t1, t2 WHERE (t1.key1 IN (1,2) OR t1.key2 LIKE 'value%') AND t2.key1 = t1.some_col; SELECT * FROM t1, t2 WHERE t1.key1 = 1 AND (t2.key1 = t1.some_col OR t2.key2 = t1.some_col2); インデックス マージには次の既知の制限があります。 1. クエリ ステートメントに、AND/OR ネストが厳しい複雑な WHERE 句が含まれており、MySQL が最適なプランを選択しない場合は、次の識別子変換を使用してみてください。
2. インデックスのマージはフルテキスト インデックスには適用されません。 EXPLAIN ステートメントの出力では、インデックス マージはタイプ列に「index_merge」として表示されます。この場合、キー列には使用されるインデックスのリストが含まれます。 intersect(...) を使用する union(...) を使用する sort_union(...) を使用する これらのアルゴリズムについては以下で詳しく説明します。オプティマイザーは、利用可能なさまざまなオプションのコスト見積もりに基づいて、さまざまなインデックス マージ アルゴリズムとその他のアクセス方法を選択します。 インデックスマージ交差アルゴリズム インデックス マージ交差アルゴリズムは、使用されているすべてのインデックスの同時スキャンを実行し、マージされたインデックス スキャンから受信した行のシーケンスの交差を生成します。 1. この形式の N 部分式では、インデックスには正確に N 個のフィールド (すべてのインデックス フィールドがカバーされます) が含まれます。N >= 1、N が 1 より大きい場合は複合インデックスになります。 key_part1 = const1 かつ key_part2 = const2 ... かつ key_partN = constN です。 2. InnoDB テーブルの主キーに対する任意の範囲条件。 例: innodb_tableから*を選択 primary_key < 10 かつ key_col1 = 20 の場合; SELECT * FROM tbl_name ここで、key1_part1 = 1 かつ key1_part2 = 2 かつ key2 = 2; インデックスマージユニオンアルゴリズム このアルゴリズムは、インデックス マージ交差アルゴリズムに似ており、WHERE 句が OR で接続された異なるインデックス キーの複数の範囲条件に変換され、条件が次の 3 つのいずれかである場合に適用できます。 1. この形式の N 部分式では、インデックスには正確に N 個のフィールド (すべてのインデックス フィールドがカバーされます) が含まれます。N >= 1、N が 1 より大きい場合は複合インデックスになります。 key_part1 = const1 かつ key_part2 = const2 ... かつ key_partN = constN です。 2. InnoDB テーブルの主キーに対する任意の範囲条件。 例: t1から*を選択 ここで、key1 = 1 または key2 = 2 または key3 = 3; innodb_tableから*を選択 (key1 = 1 かつ key2 = 2) または (key3 = 'foo' AND key4 = 'bar') AND key5 = 5; インデックスマージソート-結合アルゴリズム このアルゴリズムは、WHERE 句が OR で接続された異なるインデックス キーの複数の範囲条件に変換される場合に機能しますが、インデックス マージ ユニオン アルゴリズムには準拠していません。 Index Merge Sort-Union アルゴリズムと Index Merge Union アルゴリズムの違いは、Index Merge Sort-Union では、行を返す前に、まずすべての行の行 ID を取得し、それらを並べ替える必要があることです。 例: SELECT * FROM tbl_name key_col1 < 10 または key_col2 < 20; SELECT * FROM tbl_name ここで (key_col1 > 10 OR key_col2 = 20) AND nonkey_col = 30; これで、MySQL インデックス マージの使用に関するこの記事は終了です。MySQL インデックス マージに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: コンテナDockerCommitを介してイメージを送信し、DockerPushでイメージをプッシュします。
>>: シンプルなjQuery + CSSを使用してカスタムタグタイトルツールチップを作成します
問題の説明: MySQL に中国語の文字を挿入する場合、または MySQL では中国語の文字が正常に...
序文モバイル端末に触れたばかりの友人の多くは、クリックジャンプルーティング、特にVueルーティングを...
序文モバイル デバイスでは、帯域幅とプロセッサ速度の制限により、Web ページのパフォーマンスに対す...
基礎リレーショナル データベースでは、各データ テーブルはファイルに相当し、異なるストレージ エンジ...
mysql-5.7.17 のインストールについては記事の下部で紹介されているので、参考にしてください...
ウェブサイトのフロントエンド開発で発生するセキュリティ問題は、クライアントブラウザで実行されるコード...
HTML CSS および JavaScript を使用して、プラス、マイナス、ゼロの 3 つのボタン...
カリで再現まず、必要なvim.basicファイルにsuid権限を設定します。 chmod u+s /...
クロスドメインソリューションjsonp (get をシミュレート) CORS (クロスオリジンリソー...
中国の習慣では、旧暦の1月15日より前に新年を祝います。ここで、庭にいる友人たちに新年の幸せを祈りた...
目次1. gojsの紹介2. Gojsのアプリケーションシナリオ3. gojs を選ぶ理由: 4. ...
この記事では、Web ページの作成を学習するときに注意すべき HTML タグに関するいくつかの問題を...
昨年の前半から開発と娯楽のために Linux を使い始めましたが、今では Windows には戻れま...
目次1. CSS のみを使用して作成したアニメーションのクリスマスツリー2. CSS のみを使用して...
略語を使用すると、CSS ファイルのサイズが小さくなり、読みやすくなります。 CSS 省略形の主なル...