序文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コマンドは、あまり使用されないデータを定期的にクリーンアップするために使用できます。
Postfix は、Linux システム上で電子メールをルーティングまたは配信するために使用される無...
この記事では、参考までに簡単なHTMLと音楽プレーヤーの制作コードを紹介します。具体的な内容は以下の...
他のデバイスの画像をローカルディレクトリにマウントするなど、サーバー上の静的リソースにアクセスする必...
効果: GROUP_CONCAT関数は、フィールド値を文字列に連結することができます。デフォルトの区...
1》ウェブデザインが得意であること2》Webページのデザイン方法を知る3》計画する4. SEOを理解...
まずmysqlの圧縮バージョンをダウンロードします。公式ダウンロードアドレスは123WORDPRES...
PS: 最近、nginx を詳細に紹介している <<High-Performance ...
最近仕事でnginxの設定を変更する必要が頻繁にあり、nginxでrewriteを使用する方法を学び...
目次1. グローバルガード1. グローバル前線警備2. グローバル解像度ガード3. グローバルポスト...
Dockerのインストール1. 要件: Linuxカーネルバージョン3.10以上 表示: uname...
目次1. インストール要件2. OSイメージのダウンロード3. VMware Workstation...
Windows コマンドテルネット形式: telnet IP ポート場合: テルネット 191.1....
この記事は主にPostgreSQLマテリアライズドビューのプロセス分析について紹介します。サンプルコ...
1. offsetParentの定義: offsetParentは子要素に最も近い位置に配置された親...
Oracle と MySQL の高可用性ソリューションについては、以前からまとめたいと思っていたので...