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実行コンテナが作成状態にある問題についての簡単な説明

推薦する

nginx でディレクトリ ホワイトリストと IP ホワイトリストを設定する方法

1. ディレクトリホワイトリストを設定する:指定されたリクエストパスに制限を設定しないでください。た...

js に基づいて大きなファイルのアップロードとブレークポイントの再開を管理する方法

目次序文フロントエンド構造バックエンド構造(ノード+エクスプレス) FormDataに基づくファイル...

SQL 集計、グループ化、並べ替え

目次1. 集計クエリ1. COUNT関数2. SUM関数3. AVG関数4. MAX関数とMIN関数...

Reactイベントバインディングの詳細な説明

1. 何ですかreactアプリケーションでは、イベント名はキャメルケース形式で記述されます。たとえ...

JavaScript における async と await の使い方とメソッド

JS の async 関数と await キーワード 関数ヘルワールド() { 「こんにちは!美しい...

HTMLのimgタグで画像の中心部分だけを表示する方法(3つの方法)

HTML の img タグで画像の中心を表示する方法は、現在 3 つあります。ここで記録しておきま...

ウェブサイトに天気予報を挿入する方法

天気予報をウェブサイトに挿入すると、次のような効果が得られます。次のコードを挿入する必要があります:...

Vue3 での provide と injection の使用

1. provideとinjectの説明Provide と Inject により、ネストされたコンポ...

Vueのv-onパラメータの問題についてお話しましょう

Vue での v-on:clock の使用現在、vue.js フレームワークを学習しています。後で参...

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

Docker プロセス、メモリ、カップ消費量を表示dockerコンテナを起動し、dockerinsp...

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

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

mysql5.7.18 解凍バージョンで mysql サービスを起動します

mysql5.7.18の解凍版はmysqlサービスを起動します。具体的な内容は以下のとおりです。 1...

nginx+php-fpm サービスの HTTP ステータス コード 502 の詳細な分析

弊社の Web プロジェクトの 1 つでは、新しい都市の増加によりトラフィックと DB 負荷が増加し...

Linux の MySQL でリモート接続を承認する方法

注意: 他のマシン (IP) は、承認なしではクライアント経由で MySQL データベースに接続でき...

CentOS7 から CentOS8 にアップグレードする方法 (詳細な手順)

この記事では、具体的な例を使用して、CentOS 7 から CentOS 8 にアップグレードする方...