MySQL インデックスの知識の要約

MySQL インデックスの知識の要約

MySQL インデックスの確立は、MySQL の効率的な操作にとって非常に重要です。インデックスにより、MySQL の検索速度が大幅に向上します。

例え話で言えば、適切な設計とインデックスを備えた MySQL がランボルギーニだとすると、インデックスのない MySQL は人力三輪車です。

中国語辞書の目次(索引)を例にとると、ピンイン、画数、部首などで分類された目次(索引)から必要な文字を素早く見つけることができます。

インデックスは、単一列インデックスと複合インデックスに分けられます。単一列インデックスは、1 つの列のみを含むインデックスです。テーブルには複数の単一列インデックスを設定できますが、これらは複合インデックスではありません。複合インデックス、つまり複数の列を含むインデックス。

インデックスを作成するときは、インデックスが SQL クエリ ステートメント (通常は WHERE 句の条件として) に適用されていることを確認する必要があります。

実際、インデックスは主キーとインデックス フィールドを格納し、エンティティ テーブルのレコードを指すテーブルでもあります。

上記ではインデックスを使用する利点について説明しましたが、インデックスを過度に使用すると悪用につながります。したがって、インデックスにも欠点があります。インデックスによってクエリ速度は大幅に向上しますが、INSERT、UPDATE、DELETE などのテーブル更新の速度も低下します。テーブルを更新する場合、MySQL はデータだけでなくインデックス ファイルも保存する必要があるためです。

インデックスを構築すると、インデックス ファイル用のディスク領域が消費されます。

通常のインデックス

インデックスを作成

これは最も基本的なインデックスであり、制限はありません。以下の方法で作成できます。

mytable(username(length))にインデックスindexNameを作成します。

CHAR または VARCHAR 型の場合、長さはフィールドの実際の長さより短くてもかまいません。BLOB または TEXT 型の場合は、長さを指定する必要があります。

テーブル構造の変更(インデックスの追加)

ALTER テーブル tableName ADD INDEX indexName(columnName)

テーブル作成時に直接指定する

テーブルmytableを作成します( 
 
ID INT NULLではありません、  
 
ユーザー名 VARCHAR(16) NOT NULL, 
 
INDEX [インデックス名] (ユーザー名(長さ)) 
 
);

インデックスを削除する構文

mytable のインデックス [indexName] を削除します。

ユニークインデックス

これは、インデックス列の値が一意である必要があることを除いて、以前の通常のインデックスと似ていますが、null 値が許可されます。複合インデックスの場合、列の値の組み合わせは一意である必要があります。以下の方法で作成できます。

インデックスを作成

mytable(ユーザー名(長さ))に一意のインデックスindexNameを作成します。

テーブル構造を変更する

ALTER テーブル mytable ADD UNIQUE [indexName] (ユーザー名(長さ))

テーブル作成時に直接指定する

テーブルmytableを作成します( 
 
ID INT NULLではありません、  
 
ユーザー名 VARCHAR(16) NOT NULL, 
 
一意の [indexName] (ユーザー名(長さ)) 
 
);

ALTER コマンドを使用したインデックスの追加と削除

テーブルにインデックスを追加する方法は 4 つあります。

  • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): このステートメントは主キーを追加します。つまり、インデックス値は一意である必要があり、NULL にすることはできません。
  • ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): このステートメントは、値が一意である必要があるインデックスを作成します (NULL は複数回出現する可能性があります)。
  • ALTER TABLE tbl_name ADD INDEX index_name (column_list): 通常のインデックスを追加します。インデックス値は複数回出現できます。
  • ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list): このステートメントは、フルテキスト インデックスのインデックスを FULLTEXT として指定します。

次の例では、テーブルにインデックスを追加します。

mysql> ALTER TABLE testalter_tbl ADD INDEX (c);

ALTER コマンドの DROP 句を使用してインデックスを削除することもできます。インデックスを削除するには、次の例を試してください。

mysql> ALTER TABLE testalter_tbl DROP INDEX c;

ALTERコマンドを使用して主キーを追加および削除する

主キーは 1 つの列にのみ適用できます。主キー インデックスを追加するときは、主キーがデフォルトで空でない (NOT NULL) ことを確認する必要があります。以下に例を示します。

mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;
mysql> ALTER TABLE testalter_tbl に PRIMARY KEY (i) を追加します。

ALTER コマンドを使用して主キーを削除することもできます。

mysql> ALTER TABLE testalter_tbl で PRIMARY KEY を削除します。

インデックス情報を表示する

SHOW INDEX コマンドを使用して、テーブル内の関連するインデックス情報を一覧表示できます。 \G を追加することで出力をフォーマットできます。

次の例を試してください。

mysql> SHOW INDEX FROM table_name; \G
........

以上がMySQLインデックス知識のまとめの詳しい内容です。MySQLインデックスについてさらに詳しく知りたい方は、123WORDPRESS.COMの他の関連記事もぜひご覧ください!

以下もご興味があるかもしれません:
  • MySQL インデックス作成方法、構文構造、および例
  • MySQLの複合インデックス方式の詳細な説明
  • MySQLインデックスの詳細
  • MySql ストレージ エンジンとインデックスに関する知識のまとめ
  • MySQL のインデックスの種類と基本的な使用例
  • MySQL 8の新機能である降順インデックスの基礎となる実装の詳細な説明
  • インデックスとテーブルリターンをカバーするMySQLの使い方
  • MySQL のインデックス障害の一般的なシナリオと回避方法
  • Mysql データベースの高度なビュー、トランザクション、インデックス、自己接続、ユーザー管理の例の分析の使用
  • MySQLインデックスの基本構文

<<:  Apache クロスドメイン リソース アクセス エラーの解決策

>>:  Linux で実行中のすべてのプロセスを表示する方法

推薦する

Yahooが開発したウェブページスコアリングプラグインYSlowのスコアリングルール

YSlow は、Yahoo USA が開発したページ スコアリング プラグインです。非常に優れていま...

Linux と Windows でスケジュールされたタスクを設定する方法

目次リナックス1. crontabの基本的な使い方2. ログを有効にする3. スケジュールされたタス...

DockerコンテナでArthasを使用するための詳細な手順

Arthas はあなたのために何ができるでしょうか? Arthas 、開発者に深く愛されている Al...

Linux システム (Centos6.5 以上) のインストール JDK チュートリアル分析

記事の構成1. 準備2. Java JDK8.0をインストールする3. 環境変数を設定する3. イン...

Spark RDD をデータフレームに変換し、それを MySQL に書き込む例

DataframeはSpark 1.3.0で導入された新しいAPIで、Sparkで大規模な構造化デー...

携帯電話番号が合法かどうかを判断するWeChatアプレットのサンプルコード

目次シナリオ効果コード要約するシナリオ登録ページに携帯電話番号を入力し、登録インターフェイスを要求す...

初心者向けウェブサイト構築ガイド⑦:美しいウェブサイトを作るのはとっても簡単

私はかつて、ウェブサイトを一度も構築したことのない人々が、初心者向けのウェブサイト構築方法に関する私...

Linux のさまざまなロックメカニズムの使用方法と違いについて詳しく説明します

序文:この知識を理解する必要がある人は、すでにプロセス間通信とスレッド間通信の基本的な理解を持ってい...

モバイルデバイス用のメタタグ設定の完全なリスト

序文以前フロントエンドを勉強していたとき、メタタグに対する私の理解はこの一文だけでした。 <メ...

数十行のjsを使用してクールなキャンバスインタラクティブ効果を実現する方法を教えます

目次1. 円を描く2. マウスで動かした円3. マウスでドラッグした粒子4. カラーグラデーション粒...

1 つ以上の Linux インスタンスから SSH キー ペアのバインドを解除します。

キーペアの分離1 つ以上の Linux インスタンスから SSH キー ペアのバインドを解除します。...

AWS無料サーバーアプリケーションとネットワークプロキシ設定チュートリアルの詳細な説明

目次予防必要条件AWSアカウントを申請する仮想マシンの申請と有効化仮想マシンを申請するセキュリティグ...

960 グリッドシステムの基本原理と使用法

もちろん、CSS はフレームワークを必要とするほど高度ではないと考えて、反対の意見を持つ人もたくさん...

Vue 関数のアンチシェイクとスロットリングの正しい使用方法

序文1. デバウンス: 高頻度イベントがトリガーされた後、関数は n 秒以内に 1 回だけ実行されま...

Ubuntu 16.04 64 ビット版の VMware Tools のインストールと構成のグラフィック チュートリアル

この記事では、VMware Toolsのインストールと構成に関するグラフィックチュートリアルを参考と...