序文 最近、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 を使用する方法
>>: 要素ツリーコントロールは、ドロップダウンメニューとアイコンを統合します(ツリー+ドロップダウン+入力)
目次1.parseInt(文字列、基数) 2. 数値() 3.parseFloat()主なメソッドは...
便利なターミナル エミュレーターである Xshell は、開発者がホスト サーバーをリモート管理する...
目次01. リスナーウォッチ(1)機能(2)特性と方法(3)監視対象(4)リスニングアレイ02. 計...
ハイパーリンクの下線を削除するには、スタイルシート CSS を使用する必要があります。当面は CSS...
目次1. オブジェクト1.1 オブジェクトとは何ですか? 1.2 なぜオブジェクトが必要なのか? 2...
目次Reactの公式サイトではライフサイクルの説明を見ることができます次に、ネストされたコンポーネン...
ネイティブjsカプセル化シームレスカルーセルプラグイン、参考までに、具体的な内容は次のとおりです。例...
目次1. 概要1.1 定義1.2 機能説明2. ELKを展開する2.1 ディレクトリとファイルを作成...
目次序文1. イントラネットDNS AレコードとMXレコードを構成する2. メールサーバの初期化設定...
背景Docker の人気は、コンテナの共有と移植が容易であることと密接に関係しています。ユーザーは、...
コンピュータを使用すると、システム内に大量のゴミが生成されます。最も一般的なケースは、同じファイルが...
これは非常にシンプルな純粋な CSS3 の白い雲の浮遊する背景効果です。浮かぶ白い雲の特殊効果は、C...
目次前面に書かれた要件分析 v1アイデア1: インターセプションメソッドを使用して入力ボックスの入力...
OO、デザイン パターン、および多くのオブジェクト指向の原則について話す前に、まず 1 つのことを習...
序文今日、MySQL をインストールしたところ、データベース ストレージがデフォルトで C ドライブ...