序文: インデックス プッシュダウン (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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
この記事では、アコーディオン効果を実現するためのjsの具体的なコードを参考までに共有します。具体的な...
ネットワークの高可用性を実現するには、複数のネットワーク カードを仮想ネットワーク カードにバインド...
1.マスクレイヤーのHTMLコードと画像をdivに配置する.img_div に入れました。 <...
Deepin 2014 のダウンロードとインストールDeepin 2014 のダウンロードとインスト...
1. SELECT句を使用して複数のテーブルをクエリするSELECT フィールド名 FROM tab...
インデックスとは何ですか?インデックスは、データベース ストレージ エンジンが指定されたデータをすば...
目次序文1. レンダリング2. コード3. 背景画像素材要約する序文Threejs は、Web ベー...
フォーカス画像は、画像、テキスト、動的なインタラクティブ効果を統合したコンテンツを表示する方法です。...
よくある質問ユーザー ''@'localhost' によるデータベー...
目次1. キーワード2. 脱構築3. 文字列4. 正規化5. 配列6. 機能7. オブジェクト8.シ...
目次1. 効果2. メインコード1. 効果機能: インターフェイスから取得したデータを使用してオプシ...
この記事では、ネイティブ JS によって実装された動的読み込みプログレス バーの特殊効果を紹介します...
<br />英語アドレス: http://developer.yahoo.com/per...
結合クエリ結合クエリとは、2 つ以上のテーブル間のマッチング クエリを指し、一般的には水平操作と呼ば...
セルでは、明るい境界線の色を個別に定義できます。 > 基本構文<TD ボーダーカラーライ...