序文: インデックス プッシュダウン (ICP) は、MySQL がインデックスを使用してテーブルから行を取得する状況に対する最適化です。
インデックス プッシュダウンにより、ストレージ エンジンがデータ テーブルにアクセスする回数と、MySQL サーバーがストレージ エンジンにアクセスする回数を削減できます。 まだ少し混乱していますか?その通りです。上記の段落は確かに理解するのがかなり難しいですが、落胆しないでください。最もわかりやすい言葉を使って、インデックス プッシュダウンを理解する方法を説明します。 要約すると:
1. 左端接頭辞原則
インデックスは次の状況で使用できます。 SELECT * FROM USER WHERE id = 1 SELECT * FROM USER WHERE id = 1 かつ name = 'zhangsan' SELECT * FROM USER WHERE id = 1、name = 'zhangsan'、age = 18 の場合 次の状況ではインデックスは使用できません。 SELECT * FROM USER WHERE name = 'zhangsan' SELECT * FROM USER WHERE age = 18 SELECT * FROM USER WHERE name = 'zhangsan'、age = 18 の場合 結合インデックスの場合、 2. 表に戻る
ここではクラスター化インデックスに焦点を当てます。公式ドキュメントには次のように説明されています。
3. インデックスプッシュダウンまずユーザーテーブルを作成する テーブル「学生」を作成( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) デフォルト NULL, `age` int デフォルト 0, `class` varchar(255) デフォルト NULL, 主キー (`id`)、 キー `index_two` (`name`,`age`) )ENGINE=InnoDB; //このテーブルに複合インデックス (`name`,`age`) を追加します テーブルにデータを挿入する `student` (`name`, `age`, `class`) に VALUES ('pengpeng', 21, '1') を挿入します。 `student` (`name`, `age`, `class`) に VALUES ('pengpeng', 22, '2') を挿入します。 `student` (`name`, `age`, `class`) に VALUES ('pengpeng', 23, '3') を挿入します。 `student` (`name`, `age`, `class`) に VALUES ('pengpeng', 24, '4') を挿入します。 `student` (`name`, `age`, `class`) に VALUES ('pengpeng', 25, '5') を挿入します。 クエリによって挿入されたデータは次のとおりです 次に次のSQLを説明します 説明: select * from student where name like 'peng%' and age = 23; Extra フィールドに USING INDEX CONDITION と表示されていることがわかります。これは、この SQL がインデックス プッシュダウンを使用していることを示しています。上記の SQL ステートメントを分析してみましょう。
質疑応答エリア 質問 1:複合インデックス列が (名前、年齢、住所) の場合、次の SQL でインデックスを使用できますか? 名前が 'peng%' で、年齢が 23 である学生から * を選択します。 はい、like に遭遇すると後続の要素のマッチングが中断されますが、使用できるのは name フィールドのみです。MySQL は範囲クエリ (>、<、between、like) に遭遇してマッチングを停止するまで、右側へのマッチングを続けます。範囲列ではインデックスを使用できますが、範囲列に続く列ではインデックスを使用できません。つまり、インデックスは最大 1 つの範囲列に使用されるため、クエリ条件に 2 つの範囲列がある場合、インデックスを完全に使用することはできません。 質問 2:インデックス プッシュダウンは、結合インデックスにのみ存在できますか? はい、非結合インデックスではインデックス プッシュダウンは不可能です。 質問 3:どのような状況でインデックス プッシュダウンを使用できないのでしょうか?
質問 4 : インデックス プッシュダウンをオン/オフにするにはどうすればいいですか? // インデックスプッシュダウンはデフォルトで有効になっています。set optimizer_switch='index_condition_pushdown=off'; // 無効にする set optimizer_switch='index_condition_pushdown=on'; // 有効にする 要約する 非主キー インデックスのインデックス プッシュダウンの最適化により、テーブル リターンの数を効果的に削減し、クエリの効率を大幅に向上できます。日常業務では、インデックス プッシュダウンを使用して、ビジネス状況に応じてインデックスを最適化し、ビジネス スループットを向上させることができます。 これで、MySQL インデックス プッシュダウンに関する詳細な記事は終了です。MySQL インデックス プッシュダウンに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
まず、次の質問について考えてみましょう。このような膨大な量のデータをデータベースに挿入するには、通常...
思いつきで、小さなボールが跳ね返るケーススタディを書いてみました。具体的な内容は以下のとおりです。主...
あなたが作成するものこの新しいチュートリアルでは、CSS と JavaScript を使用して、レス...
解決策:クリック イベントをオーディオ コンポーネントにバインドし、再生メソッドと一時停止メソッドを...
何ですかまず、Docker の概念を見てみましょう。アプリケーションと実行環境をコンテナにパッケージ...
序文デフォルトでは、MySQL はデータベース クエリ データをキャッシュするために大きなメモリ ブ...
Docker コンテナはさまざまな方法で管理およびデプロイできます。 Docker コマンドを直接使...
1. はじめにWeb プロジェクトを Linux サーバーで公開する場合、SSL 証明書を構成する必...
SpringBoot は巨大な Python のようで、ゆっくりと私たちの周りを巻きつき、麻痺させま...
目次簡単な紹介間隔の設定説明するパラメータ戻り値使用法タイムアウトの設定説明するパラメータ使用法:タ...
この記事では、線形グラデーションの凹四角形の遷移効果の難しさやアイデアについて説明します。主に、凹四...
この記事では、CSS スティッキー フッターの実装コードを紹介し、共有します。詳細は次のとおりです。...
フロントエンド開発者が習得する必要のあるスキル。これらのスキルにより、フロントエンド開発者の価値は数...
シナリオ: ページAがページBを開くと、ページBで操作した後、ページAは変更されたデータを同期する必...
mysql が正常に実行されている場合、テーブル構造を表示することは難しくありません。しかし、場合...