序文: インデックス プッシュダウン (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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
目次序文1. まず、既存のバージョンの MySQL を完全にアンインストールします。 2. deb ...
1.1. ダウンロード:公式ウェブサイトから zip パッケージをダウンロードします。私は 64 ビ...
JSON は、言語に依存しないテキスト形式を使用する軽量のデータ交換形式で、XML に似ていますが、...
1. はじめにEXPLAIN ステートメントは、MySQL がステートメントを実行する方法に関する情...
Vue $http get および post リクエストのクロスドメイン問題まずconfig/ind...
MySQLサービスを停止するWindowsでは、マイコンピュータを右クリック--管理--サービスと...
目次1. マップを初期化する2. マップポイント3. 位置決めを有効にする4. マップの変更を監視す...
/****************** * 高度な文字デバイス ドライバー ***********...
MySQL ブール値、偽または真を格納つまり、データベースに保存されるブール値は 0 と 1 であり...
この記事の例では、テーブルドラッグオプションを実装するためのjsの具体的なコードを参考までに共有して...
半年もブログを書いていなかったので、少し恥ずかしいです... 正月休みは、Dota をプレイしたり ...
HTTP ステータス コードステータス コードは 3 桁の数字と理由フレーズ (最も一般的なもの: ...
tcpdump は、ネットワークの問題のトラブルシューティングに効果的に役立つ、柔軟で強力なパケット...
目次概要1. 依存性注入2. Angularの依存性注入フレームワーク概要依存性注入: デザインパタ...
<br />インターネット上の無数の情報は基本的に HTML ドキュメントで構成されてお...