MySQLインデックスの基本構文

MySQLインデックスの基本構文

インデックスはソートされたデータ構造です。 where 条件での検索や order by 条件での並べ替えに使用できるフィールドは、データの物理アドレスをインデックス化することで、すばやく検索できます。

インデックス分類

1. 通常のインデックス: 制約なし。主にクエリの効率を向上させるために使用されます。

2. ユニークインデックス(UNIQUE):通常のインデックスに基づいてデータの一意性制約を追加します。複数のインデックスが存在する場合があります。

3. 主キーインデックス:主キーインデックスは、ユニークインデックスに基づいて非NULL制約を追加します。つまり、NOT NULL+UNIQUEであり、1つしか存在できません。

4. 全文インデックス (FULLTEXT): MySQL の組み込み全文インデックスは英語のみをサポートします。

一般的には、ES(ElasticSearch)などの専用の全文検索エンジンが使用される。

インデックスを作成

#通常のインデックス

ALTER TABLE テーブル名 ADD INDEX インデックス名 (column_list);

#ユニークインデックス

ALTER TABLE テーブル名 ADD UNIQUE インデックス名 (column_list);

#主キーインデックス

ALTER TABLE テーブル名 ADD PRIMARY KEY インデックス名 (column_list);

#全文インデックス(文字列データ型)

ALTER TABLE テーブル名 ADD フルテキスト インデックス名 (column_list);  

#インデックスを表示

学生からのインデックスを表示 \G

ここでは、セミコロン終端文字の代わりに \G が使用され、出力データ情報がフォーマットされます。

#インデックスを削除

テーブルを変更してインデックスを削除します

ALTER TABLE テーブル名 DROP INDEX インデックス名;

主キーインデックスを削除する

ALTER TABLE テーブル名 DROP PRIMARY KEY;

インデックス列が 1 列の場合、それは単一のインデックスです。
複数の列を組み合わせて作成されたインデックスを結合インデックスと呼びます。

どのような状況でインデックスを作成できますか?

1. フィールドの値には、idなどの一意性の制約があります。

2. 特にデータテーブルが大きい場合にWHEREクエリ条件として頻繁に使用されるフィールド

データ量が非常に多い場合、WHERE 条件フィルタリングがないのはひどいことです。

3. GROUP BYとORDER BYを頻繁に実行する必要がある列

4. UPDATEとDELETEのWHERE条件列も通常はインデックスを作成する必要がある

その理由は、まず WHERE 条件列に基づいてレコードを取得し、その後更新または削除する必要があるためです。非インデックス フィールドでデータを更新すると、その効果はより明白になります。

インデックスが多すぎると、データの更新時にインデックスの更新が発生する場合に負担がかかります。

5.DISTINCTフィールドにはインデックスを作成する必要がある

6. 複数テーブルのJOIN操作を実行する場合、インデックスを作成するときに次の原則に注意する必要があります。

接続するテーブルの数は 3 を超えてはなりません。テーブルを追加するたびにネストされたループが追加され、桁数が急速に増加します。接続に使用するフィールドにインデックスを作成し、複数のテーブル内のフィールドの型が一貫している必要があります。

インデックスを作成する必要がないのはいつですか?

インデックスの価値は、フィールドをすばやく見つけることです。フィールドが見つからない場合は、通常、インデックスを作成する必要はありません。

1. WHERE 条件 (GROUP BY および ORDER BY を含む) で使用されないフィールドにはインデックスを作成する必要はありません。

2. テーブルのレコード数が少なすぎる場合 (たとえば、1,000 行未満) は、インデックスを作成する必要はありません。

3. フィールドに大量の重複データがある場合、性別フィールドなどのインデックスを作成する必要はありません。

4. 頻繁に更新されるフィールドには、必ずしもインデックスを作成する必要はありません。データを更新する際には、インデックスも更新する必要があるためです。インデックスが多すぎると、インデックス更新時に負担がかかり、効率に影響します。

どのような状況でインデックスが失敗するのでしょうか?

1. インデックス列を式の計算や関数に使用すると失敗します。

2. WHERE 句で、OR の前の条件列にインデックスが付けられているが、OR の後の条件列にインデックスが付けられていない場合、インデックスは無効になります。

3. あいまいクエリにLIKEを使用する場合、式は%で始まることはできません。

4. インデックス列をNOT NULL制約に設定してみる

インデックス列が NOT NULL かどうかを判断するには、多くの場合、テーブル全体のスキャンが必要です。したがって、データ テーブルを設計するときに、フィールドに NOT NULL 制約を設定するのが最適です。たとえば、INT 型フィールドの既定値を 0 に設定できます。文字タイプのデフォルト値を空の文字列 ('') に設定します。

上記はMySQLインデックスの基本構文の詳細な内容です。MySQLインデックス構文の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySql インデックスはクエリ速度を向上させる一般的な方法のコード例
  • MySQL インデックスが失敗するいくつかの状況の概要
  • MySQLのクラスタ化インデックスと非クラスタ化インデックスの詳細な説明
  • MySQL インデックスのパフォーマンス最適化の問題に対する解決策
  • MySQL インデックスの失敗を引き起こす一般的な書き込み方法の概要
  • さまざまな種類のMySQLインデックス
  • MySQL パフォーマンスの最適化: インデックスを効率的かつ正しく使用する方法
  • MySQLの複合インデックス方式の詳細な説明
  • MySQLが間違ったインデックスを選択する理由と解決策

<<:  nginx の default_server 定義とマッチングルールの詳細な説明

>>:  JavaScript配列重複排除の詳細な説明

推薦する

ウェブフロントエンドに対する一般的な攻撃とその防止方法

ウェブサイトのフロントエンド開発で発生するセキュリティ問題は、クライアントブラウザで実行されるコード...

Vueアイコンセレクターのサンプルコード

出典: http://www.ruoyi.vip/ 'vue' から Vue をイン...

EclipseにTomcatサーバー設定を追加する方法

1. ウィンドウ -> 設定を選択してEclipseの設定パネルを開きます。 2. 「設定」ウ...

ネイティブJSで様々なモーションの複合モーションを実現

この記事では、ネイティブ JS で実装された複合モーションを紹介します。複合モーションとは、異なる属...

ネイティブ JavaScript でオブジェクトが空かどうかをチェックする実装例

目次ネイティブJavaScriptとはA. 新しいブラウザでnullオブジェクトをチェックするコンス...

LinuxソースコードからTIME_WAITの期間を分析する

目次1. はじめに2. まずLinux環境を紹介しましょう3. TIME_WAIT状態遷移図4. 継...

MySQLデータベースのトランザクションとロックの詳細な分析

目次1. 基本概念酸3.自動コミット4. トランザクション分離レベル5. 同時実行の一貫性の問題6....

VMware で Centos7 ブリッジ ネットワークを構成する手順の詳細な説明

VMware仮想マシンでのCentos7ブリッジネットワーク構成の完全な手順は参考用です。具体的な内...

dockerでPostgreSQLを実行する方法

1. Dockerをインストールします。参考URL: Docker 入門インストールチュートリアル ...

Linux NFSメカニズムの動作原理と例の分析

NFS とは何ですか?ネットワークファイルシステムネットワーク上でファイルを保存および整理するための...

Ubuntu 18.04 コマンドでタッチパッドを無効/有効にする

Ubuntu では、ショートカット キーでタッチパッドをオフにできない状況によく遭遇します。この問題...

nginx のスムーズな再起動を実装する方法

1. 背景サーバーの開発プロセスでは、新しいコードや構成をロードするためにサービスを再起動することが...

Linux ホスト上で複数の MySQL データベースを起動する方法

今日は、Linux ホスト上で 4 つの MySQL データベースを起動する方法について説明します。...

Dockerコンテナを使用してプロキシ転送とデータバックアップを実装する方法

序文アプリケーションを Docker コンテナとしてサーバーにデプロイする場合、通常はネットワークと...

Vue の計算プロパティ

目次1. 基本的な例2. 計算プロパティキャッシュとメソッド3. 計算プロパティセッター序文:通常、...