MySQL 上級学習インデックスの長所と短所、使用ルール

MySQL 上級学習インデックスの長所と短所、使用ルール

1. インデックスの利点と欠点

利点: 高速検索、高速グループ化および並べ替え

デメリット: ストレージスペースを占有し、データテーブルの変更操作が減少する

2. 指標の分類

主キーインデックスつまり、プライマリインデックスは主キーpk_clolum(長さ)に基づいて作成され、重複やnull値は許可されません。
ユニークインデックスインデックスの作成に使用される列の値は一意である必要があり、null 値が許可されます。
通常のインデックス制限なしでテーブル内の通常の列で構築されたインデックス
全文索引大きなテキストオブジェクトの列に構築されたインデックス
全文索引大きなテキスト オブジェクトの列で構築されたインデックス。
総合指数複数の列を使用して構築されたインデックス。これらの列の値には null 値は許可されません。

3. インデックスの使用ルール

1. インデックス作成に適した状況

  • 主キーは自動的に一意のインデックスを作成します。
  • WHERE または ORDER BY ステートメントのクエリ条件として頻繁に出現する列にはインデックスを付ける必要があります。
  • ソートする列にはインデックスを付ける必要があります。
  • クエリ内の他のテーブルに関連付けられたフィールドと外部キー関係がインデックス化されます。
  • 同時実行性が高い状況では結合インデックスを優先します。
  • 集計関数に使用される列にはインデックスを付けることができます。たとえば、max(column_1) または count(column_1) を使用する場合は、column_1 にインデックスを付ける必要があります。

2. インデックス作成が適さない状況

  • 頻繁に追加、削除、または変更される列にはインデックスを作成しないでください。
  • インデックス付けされていない繰り返し列が多数あります。
  • テーブルのレコード数が少なすぎる場合は、インデックスを作成しないでください。

3. インデックスの失敗

  • 複合インデックスには NULL 値を指定できません。NULL 値がある場合、この列は複合インデックスに対して無効です。
  • LIKE 操作では、「%aaa%」はインデックスを使用しません。つまり、インデックスは無効になりますが、「aaa%」はインデックスを使用できます。
  • インデックス付き列で式または関数を使用すると、インデックスが無効になります。
  • クエリ条件では、< 記号、> 記号、! などの「等しくない」を使用します。 = インデックスが失敗します。
  • クエリ条件で IS NULL または IS NOT NULL を使用すると、インデックスが無効になります。
  • 文字列が一重引用符で囲まれていない場合、インデックスは無効になります。
  • クエリ内の複数の条件を OR を使用して接続すると、OR でリンクされた各条件がインデックス化されていない限り、インデックスは失敗します。
  • 並べ替えフィールドでインデックスを使用する場合、選択したフィールドもインデックス フィールドである必要があります。そうでない場合、インデックスは無効になります。
  • 複数列の並べ替えを含めないようにしてください。必要な場合は、キューの複合インデックスを作成するのが最適です。

4. インデックスに関するSQL

1. テーブル作成時にインデックスを追加する

-- テーブル作成時にインデックスを追加します -- INDEX キーワード -- myindex 自分で選択したインデックス名 -- (username(16)) 追加する列 CREATE TABLE mytable(
 ID INT NULLではありません、
 ユーザー名 VARCHAR(16) NOT NULL,
 INDEX myindex (ユーザー名(16))
);

2. テーブル作成後にインデックスを追加する

-- インデックスを追加 -- myindex インデックス名 (自己定義)
-- mytable テーブル名 CREATE INDEX myindex ON mytable(username(16));
または ALTER TABLE mytable ADD INDEX myindex(username);

3 インデックスを表示

-- mytable テーブル名 show index FROM mytable;

4. インデックスを削除する

-- myindex インデックス名 (自己定義)
-- mytable テーブル名 DROP INDEX myindex ON mytable;
または ALTER TABLE mytable DROP INDEX myindex;

要約する

これで、インデックスの長所と短所、および高度な MySQL 学習におけるルールの使用に関するこの記事は終了です。より関連性の高い MySQL の高度なインデックスのコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • mysql インデックスの追加 mysql インデックスの作成方法
  • MySQL インデックスタイプの概要と使用上のヒントと注意事項
  • MySQL でインデックスを表示、作成、削除する方法
  • MySQL インデックス作成方法、構文構造、および例
  • MySQL パフォーマンス最適化インデックス最適化
  • Mysql インデックスが失敗するいくつかの状況の分析
  • MySQLの主キーとインデックスの関係と違いの分析
  • MySQL全文インデックスに基づく詳細な理解
  • MySQLのINサブクエリによってインデックスが使用できなくなる問題を解決する
  • MySQL インデックス分析と最適化

<<:  CSS変数を使用してスタイルを変更する方法の例

>>:  Docker実行コンテナが作成状態にある問題についての簡単な説明

推薦する

MySQL で 2 つのセットの交差/差/和を取得する方法

MySQL の一般的なシナリオ: 2 つのデータ セットの交差と差を取得するステップ1. 2つのコレ...

Vue+element+springboot でファイルダウンロードの進行状況バー表示機能を実装する例

目次1. 需要背景2. 最適化計画3. 具体的な実施3.1 フロントエンドコード3.2 背景コード4...

Linuxのバージョン情報を復号化する方法

Linux バージョンに関する情報を表示および解釈するのは、見た目よりも少し複雑です。単純なバージョ...

JavaScriptカルーセルの実装について

今日もとても実践的な事例です。名前を聞くだけで高度で難しそうですよね?今日はカルーセル画像の真髄を簡...

HTML 編集の基礎 (初心者必読)

DREAMWEAVER を開き、新しい HTML を作成します。 。ボディの特性: bgcolor...

MySQL 学習 (VII): Innodb ストレージ エンジン インデックスの実装原理の詳細説明

概要データベースでは、ツリー ディレクトリと同様に、インデックスを使用してデータ検索を高速化します。...

Linux システムで時間を取得して使用する方法

Linux システム時間には 2 種類あります。 (1)暦上の時刻。値は、指定された時刻、1970 ...

Docker で onlyoffice をインストールして展開する詳細なプロセス

0. システム要件CPU I5-10400F以上メモリ 16 GB、32 GBのメモリが最適ハードド...

HTML タグのリストと使用方法

HTMLタグのリストマークタイプ名前または意味効果述べるファイルのタグ付け<HTML> ...

3分でUbuntu 16.04を初期化し、Java、Maven、Docker環境をデプロイする

Fast-Linux プロジェクト アドレス: https://gitee.com/uitc/Fas...

Keepalived は Nginx の負荷分散と高可用性のサンプル コードを実装します

第1章: keepalivedの紹介VRRP プロトコルの目的は、静的ルーティングの単一点障害問題を...

CocosCreatorゲームにおける魚群アルゴリズムの詳細な説明

序文最近CocosCreatorを学びたいと思ったので、エディターをダウンロードして起動しました。誰...

UbuntuでOpenCVをコンパイルしてインストールする方法

opencv2 の簡単なインストール: conda インストール --channel https:/...

HTML コードの書き方に関する提案のまとめ

リソースファイルのプロトコルを省略する画像、メディアファイル、スタイル、スクリプトの URL では、...

DockerでGDBを使用するときにブレークポイントを入力できない問題を解決する

質問docker で gdb を実行すると、ブレークポイントに到達しますが、ブレークポイントに入るこ...