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)

推薦する

関連するプロパティのリストを含む HTML エリア イメージ ホットスポットの使用の概要

<area> タグは主にイメージマップで使用されます。イメージマップにアクティブ領域 (...

独自の Docker イメージを作成して Dockerhub にアップロードする方法

1. まず、自分のdockerhubアカウントを登録します。登録アドレス: https://hub....

IDEAでVUEプロジェクトをデバッグするための詳細な手順

js コードをデバッグするには、コード内にデバッガーを記述するか、Chrome で毎回ブレークポイン...

CSS における重要なカスケード概念の詳細な説明

最近、プロジェクトの過程で問題に遭遇しました。メニューバーを常に上部に表示し、後続の要素をその下に表...

モバイル端末での Vue2.x Picker のグローバル呼び出し実装

目次ピッカーコンポーネントとはピッカーコンポーネントの問題解決オプションの説明解決ディレクトリ部門P...

Dockerでudpポート番号を指定する問題を解決する

Docker はコンテナを起動するときにアクセス ポートを指定します。複数の -p オプションを使用...

LinuxでTomcatのポート番号を変更する方法

ここには複数の Tomcat があります。それらを同時に使用する場合は、ポート番号を別の番号に変更す...

Vueプロジェクトでスケルトンスクリーンを使用する方法

現在、アプリケーション開発は基本的にフロントエンドとバックエンドに分離されています。主流のフロントエ...

MySQL の挿入およびバッチ ステートメントのいくつかの例の詳細な説明

目次序文1.無視を挿入2. 重複キーの更新時3. を置き換える4.存在しない場合は挿入する5. デー...

MySQLの高可用性アーキテクチャの詳細な説明

目次導入MySQL 高可用性マスター 1 つとバックアップ 1 つ: MySQL マスター スレーブ...

Linux で Jenkins プロジェクトを構築するプロセス (CentOS 7 を例に)

https://gitee.com/tengge1/ShadowEditor のデプロイメントを例...

コピー&ペーストはパッケージングの敵です

OO、デザイン パターン、および多くのオブジェクト指向の原則について話す前に、まず 1 つのことを習...

一般的なCSS3アニメーションの実装方法

1. 何ですかCSS アニメーションは、CSS を使用して拡張マークアップ言語 (XML) 要素をア...

VMware ワークステーションの仮想マシンの互換性の問題に対する解決策

VMware ワークステーションの仮想マシンの互換性の問題を解決するにはどうすればよいですか?ノート...

スキン効果を実現するJavaScript(背景の変更)

この記事では、スキン変更効果を実現するためのJavaScriptの具体的なコードを参考までに紹介しま...