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)

推薦する

Dockerを使用してクローンリポジトリを使用してGitイメージを構築する

概要私は 1 年以上 Docker を使用しています。最近、サービスをすばやくオーケストレーションし...

MySQL スケジュールタスクの実装と使用例

この記事では、例を使用して、MySQL スケジュール タスクの実装と使用方法を説明します。ご参考まで...

Ubuntu ターミナル マルチウィンドウ 分割画面 ターミネーター

1. インストールターミネーターの最大の特徴は、1つのウィンドウで複数のターミナルを開くことができる...

MySQL の完全なデータベース バックアップからデータベースとテーブルを復元する方法

公式の MySQL ダンプ ツールで、特定のデータベースのみを復元するにはどうすればよいですか?完全...

MYSQL フルバックアップ、マスタースレーブレプリケーション、カスケードレプリケーション、および半同期の概要

MySQL フルバックアップ1. バイナリログを有効にし、データベースから分離して別々に保存する v...

div が iframe に覆われるいくつかの状況とその解決策

類似の構造:コードをコピーコードは次のとおりです。 <div></div>&...

VMware vCenter 6.7 のインストール プロセス (グラフィック チュートリアル)

背景当初は VMware の公式 Web サイトから 6.7 Vcenter をダウンロードしたかっ...

ネイティブ JavaScript メッセージボード

この記事では、参考までにメッセージボードを実装するためのJavaScriptの具体的なコードを紹介し...

CSS 疑似要素と疑似クラスの魔法のような使い方についての簡単な説明

CSS は Web ページで非常に重要な役割を果たします。近年の CSS の発展に伴い、疑似要素/疑...

ES9の新機能の詳細な説明: 非同期反復

目次非同期トラバーサル非同期反復可能トラバーサル非同期反復生成非同期メソッドと非同期ジェネレーター非...

MySQL 8.0.15 のインストールと設定方法のグラフィックチュートリアル (Win10 Home バージョン 64)

超初心者の私は、MySQL を学び始めたばかりで、インストール プロセス中に多くの問題に遭遇しました...

Vueのコンポーネント値の転送から始まるオブザーバーモードの詳細な説明

目次オブザーバーパターンVue パス値最初のステップは、main.jsにバスを登録することです。 2...

Docker 構成コンテナの場所とヒントのまとめ

Docker の使用に関するヒント1. 停止したDockerコンテナをすべてクリーンアップする停止し...

Nginx のアクセス制御とパラメータ調整方法

Nginx グローバル変数Nginx には、$variable 名を通じて使用できるグローバル変数が...