序文 最近、MySQL のインデックスについて読んでいました。結合されたインデックスを見ると、左端の原則が見つかりました。関連情報を検索して、詳しく調べました。詳しい紹介を見てみましょう。 テーブルを作成する テーブル `user` を作成します ( `id` int(10) 符号なし NOT NULL AUTO_INCREMENT, `name` varchar(10) デフォルト NULL, `sex` tinyint(1) デフォルト NULL, `age` tinyint(2) デフォルト NULL, 主キー (`id`)、 キー `Index_user` (`name`,`age`) BTREE の使用 ) ENGINE=InnoDB AUTO_INCREMENT=4 デフォルト CHARSET=utf8mb4; SQLのテスト 最初 mysql> SELECT * FROM `user` where name="tom" \G を説明します ************************** 1. 行 **************************** id: 1 選択タイプ: シンプル テーブル: ユーザー パーティション: NULL タイプ: ref 可能なキー: Index_user キー: Index_user キーの長さ: 43 参照: 定数 行数: 1 フィルター: 100.00 追加: NULL 2番目 mysql> SELECT * FROM `user` where age=18 and name="tom" \G を説明します ************************** 1. 行 **************************** id: 1 選択タイプ: シンプル テーブル: ユーザー パーティション: NULL タイプ: ref 可能なキー: Index_user キー: Index_user キーの長さ: 45 参照: const、const 行数: 1 フィルター: 100.00 追加: NULL 3番目 mysql> SELECT * FROM `user` where age=18 \G を説明します ************************** 1. 行 **************************** id: 1 選択タイプ: シンプル テーブル: ユーザー パーティション: NULL タイプ: すべて 可能なキー: NULL キー: NULL キー長さ: NULL 参照: NULL 行数: 3 フィルター: 33.33 追加: where の使用 セットに 1 行、警告 1 件 (0.00 秒) 4番目 mysql> explain SELECT * FROM `user` where name="tom" and age=18 \G ************************** 1. 行 **************************** id: 1 選択タイプ: シンプル テーブル: ユーザー パーティション: NULL タイプ: ref 可能なキー: Index_user キー: Index_user キーの長さ: 45 参照: const、const 行数: 1 フィルター: 100.00 追加: NULL セットに 1 行、警告 1 件 (0.00 秒) 要約する このことから、SQL の where 句に結合インデックスの最初のフィールドが含まれているクエリのみがインデックスにヒットできることがわかります。これは、インデックスの最左一致機能と呼ばれます。 結合インデックスの使用は、where 条件の記述順序とは関係ありません。MySQL クエリ分析が最適化され、インデックスが使用されます。ただし、クエリ アナライザーへの負荷を軽減するには、インデックスの左から右への順序を一定に保つことが最善です。 b+ツリーのデータ項目は複合データ構造です。たとえば、(名前、年齢、性別) を使用すると、b+ツリーは左から右の順に検索ツリーを構築します。たとえば、(張さん、20、女性) などのデータを取得する場合、b+ツリーは最初に名前を比較して次の検索方向を決定します。名前が同じ場合は、年齢と性別を順に比較して、最終的に取得したデータを取得します。ただし、名前のない (20、女性) などのデータが見つかった場合、検索ツリーが確立されるときに名前が最初の比較要素となるため、b+ツリーは最初のステップでどのノードをチェックすればよいかわかりません。次にどこを照会するかを知るには、最初に名前に基づいて検索する必要があります。 さて、今回の記事は以上です。この記事の内容が皆さんの勉強や仕事に少しでも参考になれば幸いです。123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Linux リモート開発に vs2019 を使用する方法
>>: 要素ツリーコントロールは、ドロップダウンメニューとアイコンを統合します(ツリー+ドロップダウン+入力)
序文js を使用して、年の回転選択効果を実現します。では早速、写真を見てみましょう。 1. アイデア...
前回、私たちは 2 つのヘッダー レイアウト (フレックスボックス 1 つとフロート 1 つ) を考...
<br /> 第 1 部と第 2 部では、Web サイトのパフォーマンス、ページ コンテ...
目次ベーシックエディションステップ1: Axiosを構成するステップ2: リクエストをカプセル化する...
ウェブデザイナーでもUIデザイナーでも、ログインページや登録ページのデザインは必ず経験しなければなら...
技術的背景Latex は文書作成、特に記事作成には欠かせないツールであり、必須のテキスト組版ツールで...
この記事では、Ubuntu 環境で PHP と Nginx をコンパイルしてインストールする方法につ...
目次1. MySQLデータのバックアップ1.1. データをバックアップするためのmysqldumpコ...
この記事では、CSS で記事の区切り線を実装するさまざまな方法をまとめています。区切り線はページを美...
PHP7 がリリースされてからかなり時間が経ちますが、パフォーマンスが大幅に向上したことはよく知られ...
目次安定スロットリング要約する安定自動ドアは人を感知してドアを開け、5 秒間のカウントダウンを開始し...
この記事では、参考までにMySQL 5.7.13 winx64のインストールと設定方法のグラフィック...
この記事の例では、多人数チャットルームを実装するためのjsコードの具体的なコードを参考までに共有して...
序文通常、大量のデータを扱う MySQL クエリには「ページング」戦略が採用されます。ただし、ページ...
この記事は、参考のためにMySQL 8.0.16のインストールグラフィックチュートリアルを記録してい...