序文Index Condition Pushdown (ICP) は、MySQL 5.6 の新機能です。テーブルクエリの数を減らし、検索効率を向上させることができます。 MySQL アーキテクチャインデックス プッシュダウンを理解するには、まず MySQL のアーキテクチャを理解する必要があります。 上記の画像は公式 MySQL ドキュメントからの抜粋です。 MySQL は通常、上から下に向かって次のレイヤーに分かれています。
MySQL サービス レイヤーは、SQL 構文の解析、トリガー、ビュー、組み込み関数、binlog、実行プランの生成などを担当し、ストレージ エンジン レイヤーを呼び出してデータの保存と取得を実行します。 「インデックス プッシュ ダウン」の「ダウン」は、実際には、上位層 (サービス層) が担当するタスクの一部が、処理のために下位層 (ストレージ エンジン) に引き渡されることを意味します。 インデックスプッシュダウンの例ユーザー テーブルのデータと構造が次のとおりであると仮定します。
結合インデックス (年齢、誕生日) を作成し、年齢が 20 歳を超え、誕生日が 03-01 であるユーザーをクエリします。 年齢が20歳を超え、誕生日が「03-01」であるユーザーから*を選択します。 年齢フィールドは範囲クエリを使用するため、最左プレフィックスの原則に従って、この場合、範囲クエリに使用できるのは年齢フィールドのみであり、インデックス内の誕生日フィールドは使用できません。実行プランを表示するには、explain を使用します。 +------+-------------+-------+-------+---------------+--------------+--------+------+------+-----------------------+ | id | select_type | テーブル | タイプ | possible_keys | key | key_len | ref | 行 | 追加 | +------+-------------+-------+-------+---------------+--------------+--------+------+------+-----------------------+ | 1 | SIMPLE | ユーザー | 範囲 | age_birthday | age_birthday | 4 | NULL | 3 | インデックス条件を使用 | +------+-------------+-------+-------+---------------+--------------+--------+------+------+-----------------------+ age_birthday インデックスが使用されているにもかかわらず、インデックスの長さ key_len が 4 しかないことがわかります。これは、結合インデックスの age フィールドのみが有効であることを意味します (age フィールドは int 型であり、4 バイトを占めるため)。最後に、「Extra」列の「Using index」条件は、このクエリがインデックス プッシュダウン最適化を使用することを示します。 インデックス プッシュダウンなしで次の手順を実行します。
インデックス プッシュダウン最適化が有効になっている場合、実行手順は次のようになります。
インデックス プッシュダウンを有効にすると、where 条件は MySQL サービス レイヤーからストレージ エンジン レイヤーに移動されて実行されます。利点は、ストレージ エンジンが ID に基づいてテーブルからデータを読み取る頻度が少なくなることです。上記の例では、インデックス プッシュダウンがない場合、テーブルをさらに 2 回クエリする必要があります。さらに、テーブル クエリは個別の IO になる可能性が高く、場合によってはデータベースのパフォーマンスが大幅に向上する可能性があります。 要約するこれで、MySQL Index Pushdown (ICP) の簡単な理解と例に関するこの記事は終了です。MySQL Index Pushdown (ICP) に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: CSS3入力ボックスの実装コードはGoogleログインのアニメーション効果に似ています
>>: docker pruneコマンドは、あまり使用されないデータを定期的にクリーンアップするために使用できます。
1. Python 3をインストールする1. 依存パッケージをインストールしますyum instal...
序文JS の this ポインターは、初心者にとって常に頭痛の種でした。今日は、これが地面に落ちたと...
CentOS8.0-1905 のリリース後、FTP サーバーを CentOS の新しいバージョンに移...
この記事では、配列を走査する 4 つの方法を比較してまとめます。 for ループ: for (let...
1. テーブル構造 2. 表データ 3. クエリのteacher_nameフィールドは空にすることは...
成果を達成する実装コードhtml <input type="radio" ...
目次序文以前のバージョンイテレータパターンイテレータファクトリ関数イテレータプロトコル最後に序文多く...
目次Vueのリスナーとは何かリスナーの使い方vue リスナーウォッチVue リスナー - ディープリ...
この記事では、参考までにMySQL 5.7.13 winx64のインストールと設定方法のグラフィック...
この記事は主に、みんなで共有できるVue3ベースのフルスクリーンドラッグアップロードコンポーネントを...
目次1. letキーワード1.1 基本的な使い方1.2 変動昇進はない1.3 一時的なデッドゾーン1...
序文: Linux システムでの rm は元に戻せません。コマンドの設計自体に問題はありません。問題...
シングルノードデータベースの欠点大規模なインターネットプログラムはユーザーベースが大きいため、アーキ...
まず Linux に ssh をインストールします。例として Centos を使用します。ポータル:...
この記事では、広告を上下にスクロールする効果を実現するためのjQueryの具体的なコードを参考までに...