MySQLにインデックスを追加しても効果がないいくつかの状況について簡単に説明します。

MySQLにインデックスを追加しても効果がないいくつかの状況について簡単に説明します。

インデックスを追加すると、クエリの効率が向上します。

インデックスを追加するということは、ドキュメントのディレクトリと同様に、データのアドレスを格納するインデックス ファイルを追加することを意味します。検索プロセス中は、本のコンテンツから検索する必要はなく、ディレクトリに対応するページ番号に従って直接検索できます。インデックスはアドレスに基づいて検索されます。
インデックスを作成します。インデックスで使用されるデータ構造は多数あります。一般的なものとしては、B ツリー、ハッシュなどがあります。 MySQL で使用されるデフォルトのデータベース インデックスは innerDB であり、innerDB のインデックス構造は B ツリーです。
しかし、どのような状況でインデックスを追加しても、使用中に期待どおりの結果が得られないのでしょうか?よくある状況は次のとおりです:
名前、年齢、住所がインデックスされていると仮定します。インデックス名は、index_name、index_age、および index_address です。

explainを使用してSQL実行プランを表示します

実行計画の種類

MySQL がテーブル内の必要な行を見つける方法を示します。これは「アクセス タイプ」とも呼ばれます。一般的なタイプは次のとおりです。

ALL、インデックス、範囲、ref、eq_ref、const、システム、NULL
ALL: フルテーブルスキャン。MySQLはテーブル全体をスキャンして一致する行を検索します。
index: フル インデックス スキャン。index と ALL の違いは、インデックス タイプはインデックス ツリーのみをトラバースすることです。
range: インデックス範囲スキャン。インデックスのスキャンは特定のポイントから開始され、値の範囲に一致する行を返します。明らかなインデックス範囲スキャンは、<、> を含む between 句または where 句を使用したクエリです。 MySQL がインデックスを使用して IN() や OR リストなどの値の範囲を検索する場合、範囲スキャンも表示されますが、もちろんパフォーマンスには違いがあります。
ref: 非一意インデックススキャンまたは一意インデックスのプレフィックススキャンを使用して、単一の値に一致する行を返します。
eq_ref: ref と似ていますが、使用されるインデックスが一意のインデックスであるという点が異なります。各インデックス キー値に対して、テーブル内に一致するレコードは 1 つだけです。簡単に言えば、主キーまたは一意のキーは、複数のテーブルを結合する際の結合条件として使用されます。

1. またはを使用して複数の列を照会します。type=all

ここに画像の説明を挿入

2. あいまいクエリを使用する、type=all

ここに画像の説明を挿入

3. インデックスフィールドの操作

ここに画像の説明を挿入

4. 列の型が文字列の場合は引用符で囲む必要があります。名前フィールドは文字列型です

引用符なし type=all

ここに画像の説明を挿入

引用符があります tye=ref

ここに画像の説明を挿入

まず、MySQL には「文字を数値」に変換する型変換ルールがあります。上記の SQL には次の操作が含まれています。
SELECT name,age,address FROM user where cast(name as signed)= 10; を説明します。

5. 逆クエリの区別

(not、not in、not like、<>、!=、!>、!<) インデックス効果を使用する

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

その他の状況

1. 共同インデックス内の関連フィールドは同じ文字セットを使用していません。
2. 最初のインデックス フィールドは結合インデックス クエリでは使用されません。つまり、左端の原則は満たされません。
3. データ量自体が少ないため、MySQL がインデックスが必要かどうかを判断します。

これで、MySQL にインデックスを追加しても機能しないいくつかの状況に関するこの記事は終了です。MySQL にインデックスを追加しても機能しない状況の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySql キャッシュ クエリの原理とキャッシュ監視およびインデックス監視の概要
  • MySQL シリーズ 9 MySQL クエリ キャッシュとインデックス
  • MySQL ジョイントインデックスの使用ルール
  • インデックススキャンを使用したMySQLソート
  • MySQLインデックスとは何ですか?わからない場合は聞いてください

<<:  Vueライフサイクル機能の詳細な説明

>>:  見栄えの良い CSS カスタム スタイル (タイトル h1 h2 h3)

ブログ    

推薦する

10分で始めるCSS3アニメーション

導入アニメーションを使用すると、JavaScript や jQuery に依存せずに、純粋な CSS...

JavaScript 配列の詳細な概要

目次1. 配列誘導1. 文字列を配列に分割する2. コレクションとマップを新しい配列に変換する3. ...

MySQL の時間タイプの選択

目次日時タイムスタンプ選び方ミリ秒の時間を保存する方法結論MySQL は、日付と時刻を処理するために...

高速でクールな揺れアニメーション効果を実現するCSS

1. Animate.css の紹介Animate.css は、Web プロジェクトですぐに使用で...

Kubernetes を使用して Springboot または Nginx をデプロイするための詳細なチュートリアル

1 はじめに「Maven がワンクリックで Springboot を Docker リポジトリにデプ...

CSS3 でクールなスライス画像カルーセル効果を実現

今日は、CSS を使用してクールな画像カルーセル コンポーネントを作成する方法を学びます。その原理は...

Mysql マルチテーブル結合クエリの実行の詳細について簡単に説明します。

まず、このブログのケースデモンストレーション テーブルを作成します。 create table a(...

この記事はJavaScriptの変数とデータ型を理解するのに役立ちます

目次序文:親切なヒント:変数1. 免責事項2. 譲渡3. 2つの小さな文法上の詳細変数の命名規則なぜ...

Linux Zabbixカスタム監視およびアラーム実装プロセスの分析

ターゲットzabbix フロントエンド監視の iostat コマンドでデータの 1 つを表示します。...

JavaScript 配列を走査する 5 つの方法

目次1. forループ: 基本的でシンプル2. forEach() メソッド: コールバック関数の使...

CSS3の新しいセレクタの例

構造(位置)擬似クラスセレクタ(CSS3) :first-child : 指定されたセレクタは、親要...

Js の継承とプロトタイプチェーンを理解するのに役立つ記事

目次継承とプロトタイプチェーン継承されたプロパティ継承されたメソッドJavaScript でのプロト...

MySQLファイルストレージの詳細な説明

ファイルシステムとは何かInnoDB や MyIASM などのストレージ エンジンはテーブルをディス...

React 合成イベントの説明

目次入力ボックスをクリックして開始します拡張機能入力ボックスをクリックすると複数のイベントが発生しま...

MySQL 挿入時間の 8 時間の違いの問題の解決方法

MySQL挿入時の8時間の時差の問題を解決する通常、jdbc の URL にはいくつかのパラメータを...