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)

推薦する

Windows で MySQL サービスを停止または削除できない問題の解決策

圧縮パッケージを解凍して Windows に MySQL をインストールしました。インストール方法は...

URLエスケープエンコーディングの特殊文字に基づいて

目次URL 内の特殊文字URL 特殊文字エスケープ、URL 内の一部の文字には特別な意味があり、基本...

Docker プライベートリポジトリの管理とローカルリポジトリ内のイメージの削除

1: Dockerプライベートウェアハウスのインストール1. イメージリポジトリからイメージをダウン...

html2canvasで画像が正常にキャプチャできない時の解決方法

質問まず、私が遭遇した問題についてお話しします。まず、そういった需要があるわけです。フロントエンドは...

MySQLでTEXT/BLOB型を使用する際の注意点を詳しく説明します

1. TEXTとBLOBの違いTEXT ファミリと BLOB ファミリの唯一の違いは、BLOB 型は...

マークアップ言語 - アンカー

前: マークアップ言語 - フレーズ要素 オリジナルソース 第 7 章 アンカーHTML のリンクの...

MySQL ベースのシーケンス実装方法

チームは新しいフレームを交換しました。すべての新しいビジネスでは、新しいフレームワークと新しいデータ...

...

Vueはアップロードコンポーネントを実装します

目次1. はじめに2. アイデアファイルをアップロードする2つの方法3. ライフサイクル4. コード...

Vue3 ベースのスクリプト設定構文 $refs の使用

目次1. Vue2 構文2. Vue3の使用1. コンポーネントのref値を設定する2. コンポーネ...

Linux の非常に詳細な gcc アップグレード プロセス

目次序文1. 現在のgccバージョン2. gccをインストールする3.gmpのインストール4.MPF...

XHTML コードで Marquee タグを使用する方法

フォーラムで、ネットユーザーの jeanjean20 が、Marquee を標準に適合させる方法につ...

MySQL における TIMESTAMPDIFF ケースの詳細な説明

1.構文TIMESTAMPDIFF(unit,begin,end); 単位に従って時間差を返します。...

Discuz! フォーラムに設定オプションを追加する方法

Discuz! フォーラムにはバックグラウンドで多くの設定オプションがあり、これらの設定オプションを...

MySQLのインデックスシステムがB+ツリーを使用する理由の分析

目次1. インデックスとは何ですか? 2. インデックスはなぜ必要なのでしょうか? 3. インデック...