序文: インデックス プッシュダウン (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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
目次更新可能なビュービューのパフォーマンスビューの制限ビューは MySQL 5.0 以降で導入されま...
この記事では、「'localhost' (10061) の MySQL サーバーに接...
最近、「フットボール ナビゲーション」Web サイトに取り組んでいるときに、上部の固定ナビゲーション...
目次負荷分散負荷分散分類1. DNS 負荷分散2. IP負荷分散3. リンク層の負荷分散4. ハイブ...
この記事では、WeChatアプレットの左右連動を実現するための具体的なコードを参考までに紹介します。...
win docker-desktopを使ってコンテナ開発に接続し、ネットワーク上で色々試してみたいと...
Linux システムでは、ユーザーが手動で作成したさまざまなアカウントに加えて、システムまたはプログ...
UNION演算子の使用union : 2 つ以上の SELECT ステートメントの結果を 1 つの...
BackUpMysql.sh スクリプト #!/bin/bash PATH=/bin:/sbin:/...
注記記事表示リストインターフェースを開発する場合、情報の基本的な概要を提供するために記事ヘッダーコン...
目次ヴィテ建てる構成vite.config.tsルーターtsタイプvue3 の知識設定小道具コンテク...
このセクションでは、HTML のリスト要素について学習します。リストは、Web サイトのデザインにお...
コードをコピーコードは次のとおりです。 <!DOCTYPE HTML PUBLIC "...
序文この記事では、Linux 構成ログ サーバーに関する関連コンテンツを主に紹介し、参考と学習のため...
準備1. 環境の説明:オペレーティング システム: Windows Server 2019 PHP ...