MySQLにおけるテーブルインデックスの定義方法と導入

MySQLにおけるテーブルインデックスの定義方法と導入

概要

インデックスは、テーブル内の 1 つ以上の列に基づいて DBMS によって特定の順序で作成される列値とレコード行の対応表であり、DBA 管理を容易にします。

  • インデックスはファイルの形式で保存されます。DBMS はテーブルのすべての内容を同じインデックス ファイルに保存するため、ディスク領域を占有します。インデックスの数が多い場合、データ ファイルよりも早く最大ファイル サイズに達する可能性があります。
  • インデックスによりクエリ速度は向上しますが、テーブルの更新速度も低下します。テーブル内のインデックス列のデータを更新すると、インデックス ツリーがテーブルの内容と完全に一致するように、インデックスが自動的に更新されます。そのため、インデックスの数が多いほど、更新時間は長くなります。

インデックスは用途に応じて論理的に3つのカテゴリに分類されます。

  1. 通常のインデックス (INDEX): 制限のない最も基本的なインデックス タイプです。通常はINDEXまたはKEYキーワードを使用します
  2. ユニーク インデックス (UNIQUE): インデックス内のすべての値は 1 回だけ出現でき、一意である必要があります。通常はキーワード UNIQUE が使用されます。
  3. 主キー: 主キーは一意のインデックスです。主キーを作成するときは、キーワード PRIMARY KEY を指定する必要があり、null 値を持つことはできません。これは通常、テーブルの作成時に指定され、テーブルを変更することによって追加することもできます。各テーブルには、主キーを 1 つだけ持つことができます。

インデックスを作成

インデックスを作成するには、次の 3 つの方法があります。

インデックスの作成

CREATE [UNIQUE] INDEX インデックス名
tbl_name(index_col_name,...) はありません
  1. UNIQUE: 一意のインデックスを作成することを指定します。テーブルに対して複数のインデックスを作成でき、各インデックスにはテーブル内で一意の名前が付けられます。
  2. tabl_name: データベーステーブル名
  3. index_col_name : インデックスの説明。形式はcol_name[(長さ)][ASC|DESC]です。

索引記述の3つの文法要素

  • 列名
  • 長さ
  • 昇順|降順
mysql>インデックスindex_customersを作成します
-> NO mysql_test.customers (cust_name(3)ASC)
クエリは正常、影響を受けた行は 0 行 (0.20 秒)
レコード:0 重複:0 警告:0

テーブルの作成

  • [CONSTRAINT [symbol]] PRIMARY KEY (index_col_name,...) : 新しいテーブルを作成するときに主キーを作成します
  • {INDEX|KEY}[index_name](index_col_name,...) : テーブルの作成時にテーブルのインデックスを作成します。
  • [CONSTRAINT [シンボル]] UNIQUE [INDEX|KEY] [index_name] (index_col_name,...) : テーブルを作成するときに一意のインデックスを作成するために使用されます
  • [CONSTRATIN [シンボル]] FOREIGN KEY[インデックス名] (インデックス列名,...) : テーブル作成時に外部キーを作成します
  • KEY : キーワードINDEXの同義語
  • CONSTRAINT: 主キー、UNIQUE キー、外部キーの名前を定義します。CREATE TABLE を使用して列オプションを定義する場合、列定義の直後に PRIMARY KEY を追加することで主キーを追加できます。主キーが複数の列で構成される複数列インデックスで構成されている場合、この方法は使用できません。
mysql> mysql_testを使用します
データベースが変更されました
mysql> テーブル seller を作成する
->(
-> seller_id int NOT NULL AUTO_INCREMENT
-> seller_name char(50) NOT NLULL、
-> seller_address char(50) null、
-> 製品タイプ int(5) NULL
-> 売上 int NULL
-> 主キー (seller_id,product_type)
-> INDEX index_seller(販売)
->)
クエリは正常、影響を受けた行は 0 行 (0.20 秒)

テーブルの変更

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • MySQLテーブルインデックスの重要なポイント

<<:  mini-vueレンダリングのシンプルな実装

>>:  5分でWebRTCビデオチャットを構築する

推薦する

SQL 文で OR と AND を混在させる場合のヒント

現在、このような要件があります。ログインした人がカスタマー サービス担当者である場合、注文は「このカ...

MySQL インデックス プッシュダウン (ICP) の簡単な理解と例

序文Index Condition Pushdown (ICP) は、MySQL 5.6 の新機能で...

jsはテーブルの追加と削除の操作を動的に実装します

この記事の例では、jsでテーブルを動的に追加および削除するための具体的なコードを参考までに共有してい...

Docker で Python スクリプトを実行する方法

まず、Docker イメージ用の特定のプロジェクト ディレクトリを作成します。例: mkdir /h...

WeChatアプレットが連携メニューを実現

最近はコース設計を実現するために、フロントエンドも少しやっています。今日はいくつかの機能を実現するた...

MySQL学習記録: KEYパーティションが引き起こした血なまぐさい事件

需要背景ビジネス テーブル tb_image のデータの一部は次のとおりです。id は一意ですが、i...

MySQL 外部キー制約 (FOREIGN KEY) ケースの説明

MySQL 外部キー制約 (FOREIGN KEY) はテーブルの特別なフィールドであり、主キー制約...

CSS で美しい時計アニメーション効果を実装するためのサンプルコード

仕事を探しています!!!事前準備:まず、このアニメーションは、以前のローディングアニメーションとクー...

MySQL の従来のソート、カスタム ソート、中国語のピンイン文字によるソート

MySQL の通常のソート、カスタム ソート、中国語のピンイン文字によるソート。実際の SQL を記...

MySQL 4 の一般的なマスタースレーブレプリケーションアーキテクチャ

目次1つのマスターと複数のスレーブのレプリケーションアーキテクチャマルチレベルレプリケーションアーキ...

Dockerで作成したコンテナを削除する方法

Dockerで作成したコンテナを削除する方法1. まず、docker -s -aコマンドを使用してす...

MySQL 5.7 の Docker バージョンを MySQL 8.0.13 にアップグレードし、データを移行する

目次1. 古いMySQL5.7データをバックアップする2. MySQL8.0.13のイメージをプルし...

Vue のすべてのカプセル化方法の簡単な概要

目次1. カプセル化API 2. グローバルツールコンポーネントを登録する3. グローバル関数をカプ...

MySQLデータベースのトランザクションとインデックスの詳細な説明

目次1. 事務:取引の 4 つの主な特徴:同時トランザクションはどのような問題を引き起こしますか? ...