MySQLインデックスが失敗するいくつかの状況の分析

MySQLインデックスが失敗するいくつかの状況の分析

1. 最左プレフィックス原則 - 複数の列にインデックスが付けられている場合は、最左プレフィックス原則に従う必要があります。これは、クエリがインデックスの左端の列から開始され、インデックス内の列をスキップしないことを意味します。

前提条件: 複合インデックス (ユーザー名、パスワード、年齢) がテーブルに追加されている

分析: クエリにユーザー名がなく、クエリ条件複合インデックスの左端のユーザー名が欠落しているため、最良左プレフィックスの原則に違反し、インデックスが失敗して ALL (完全なテーブル スキャン) になります。

分析: クエリ条件にユーザー名とパスワードがありません。クエリ条件複合インデックスの左端のユーザー名とパスワードが欠落しているため、最良左プレフィックスの原則に違反し、インデックスが失敗して ALL (完全なテーブル スキャン) になります。

分析: このクエリにはユーザー名条件が 1 つだけあります。最良左プレフィックスの原則に従って、インデックスは部分的にしか使用できません。

2. インデックス列に対して操作 (計算、関数、(自動または手動の) 型変換) を実行しないでください。インデックスが失敗し、テーブル全体のスキャンが発生します。

分析: 最初のグラフインデックス列は関数を使用せず、左プレフィックスの原則に従い、インデックスを使用できます。 2 番目の図では、インデックス列に関数を使用しています。左プレフィックスの原則に従っていても、インデックスは無効のままです。

3. ストレージ エンジンはインデックス内の範囲条件の右側の列を使用できず、範囲の後のインデックスは無効になります。 (< 、> との間)

分析: 図 1 のすべてのインデックスが使用されます。図 2 では、インデックスはユーザー名と年齢を使用していますが、ユーザー名はインデックスを使用して取得され、年齢はインデックスのソートに重点を置いています。この場合、年齢は範囲検索であり、パスワード インデックスは無効になります。

4. MySQL が不等号 (!= または <>) を使用すると、インデックスが使用できなくなり、インデックスが失敗します。

5. MySQLでis not nullまたはis nullを使用すると、インデックスが使用できなくなります。

分析: ユーザー名列に通常のインデックスが作成されます。クエリには null が含まれていないため、結果のインデックスは有効ではありません。

6. MySQL では、like クエリが % で始まる場合、インデックスは無効になり、テーブル全体がスキャンされてインデックスがカバーされます。

分析: ユーザー名列に通常のインデックスが作成され、% で始まる値でクエリが実行されます。その結果、インデックスが無効になり、上書きされます。

7. MySQL では、文字列インデックスは一重引用符で囲まれていない場合は無効になります。正しい書き方: select * from t_user where username = 'lujin';

8. MySQL では、条件に or が含まれている場合、条件にインデックスが含まれていても or は使用されません (このため、 or はできるだけ使用しないようにする必要があります)。またはを使用してインデックスを有効にする場合は、または条件内の各列にのみインデックスを追加できます。

9. MySQLがインデックスよりも高速にフルテーブルスキャンを使用する場合、インデックスは使用されません。

要約する

これで、MySQL インデックス障害の分析に関するこの記事は終了です。MySQL インデックス障害に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Mysql インデックスが失敗するいくつかの状況の分析
  • MySQL のインデックス障害の一般的なシナリオと回避方法
  • MySQL でデータベース インデックスが失敗する状況の詳細な分析
  • mysql はインデックスを無効にしますか?
  • MySQL インデックス障害の 5 つの状況の分析
  • MySQLのあいまいクエリインデックスの失敗の問題を解決するいくつかの方法
  • MySQL インデックスが失敗するいくつかの状況の概要
  • MySQL インデックスの失敗を引き起こす一般的な書き込み方法の概要
  • MySQLインデックスが失敗するいくつかの状況の詳細な分析
  • MySQL データベースのインデックスと障害シナリオの詳細な説明

<<:  スマートCSSを使用して、ユーザーのスクロール位置に基づいてスタイルを適用します。

>>:  Docker View プロセス、メモリ、カップ消費量

推薦する

JS 継承の詳細

目次序文準備する要約する継承方法プロトタイプ継承プロトタイプチェーン継承コンストラクタの借用(クラス...

Vue の 4 つのカスタム命令の説明と使用例

4つの実用的なVueカスタム指示1. Vドラッグ要件: マウスドラッグ要素アイデア:要素のオフセット...

VUEはFlappy Birdゲームのサンプルコードを実装します

Flappy Bird は、誰もがアプリでプレイしたことがある非常にシンプルな小さなゲームです。ここ...

Html+CSS 描画三角形アイコン

まずはレンダリングを見てみましょう: XML/HTML コードコンテンツをクリップボードにコピー&l...

MySQL クエリ ステートメントのプロセスと EXPLAIN ステートメントの基本概念とその最適化

ウェブサイトやサービスのパフォーマンスは、データベースの設計(適切な言語開発フレームワークを選択した...

MySQLクエリが遅い原因と解決策

クエリ速度が遅くなる理由は多数ありますが、最も一般的な理由は次のとおりです。 1. インデックスがな...

JavaScriptは文字の出現回数をカウントします

この記事の例では、文字の出現回数をカウントするJavaScriptの具体的なコードを参考までに共有し...

Kubernetes コントローラーとラベルの簡単な分析

目次01 k8sの一般的なコントローラーRCコントローラーデプロイメント コントローラーステートフル...

Dockerはローカルディレクトリとデータボリュームコンテナ操作をマウントします

1. DockerはローカルディレクトリをマウントしますDocker は、ホスト上のディレクトリをイ...

Docker Gitlab+Jenkins+Harborは永続的なプラットフォーム運用を構築します

CI/CD の概要CIワークフロー設計Gitコードバージョン管理システムはコマンドラインでのみ管理で...

Linux システムで Tomcat のポート 80 を使用する方法

アプリケーションシナリオ多くの場合、Linux サーバーに tomcat や nginx などのソフ...

Vue はシェイク機能を実装します (ios13.3 以降と互換性があります)

最近、shake.jsを使用して、shakeに似た機能を作成しました。ただし、shake機能はios...

MySQLデータベースの追加、削除、変更操作の詳細な説明

データの挿入テーブル名(列名1、列名2、列名3)の値(値1、値2、値3)に挿入します。ユーザーに(u...

ECMAScript の演算子を理解するための記事

目次単項演算子ブール演算子乗算演算子加法演算子関係演算子等価演算子条件演算子代入演算子カンマ演算子要...

ウェブページ制作をマスターするために必要な6つのスキルのまとめ

ウェブデザイナーはジェネラリストであると言わざるを得ません。グラフィックデザイナーは、さまざまな特殊...