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ビデオチャットを構築する

推薦する

この記事では、MySQLのマスタースレーブ同期の原理を説明します。

目次MySQL マスタースレーブ同期原理の簡単な分析1. マスタースレーブとは何ですか? 2. 主従...

MySQL マスタースレーブレプリケーションの実践の詳細説明 - GTID ベースのレプリケーション

GTIDベースのレプリケーション導入GTID ベースのレプリケーションは、MySQL 5.6 以降に...

JavaScriptコールバック関数の詳細な理解

目次序文クイックレビュー: JavaScript 関数関数とは何ですか?関数を宣言する関数の呼び出し...

MySQLの浅いエントリと深いエグジットの原則についての簡単な説明

目次1. ページの概要2. 下限と上限3. ページディレクトリを使用する4. ページの実際の外観4....

Linuxファイルを表示するコマンドの詳細な説明

Linuxファイルを表示する方法ファイルの内容を表示するコマンド: catは最初の行からコンテンツを...

MySQL トランザクション分離レベルの原則例分析

導入あなたも面接でこれに遭遇したことがあるはずです。トランザクションの分離レベルについてお話ししまし...

jsネイティブカルーセルプラグインの制作

この記事では、jsネイティブカルーセルプラグインの具体的なコードを参考までに共有します。具体的な内容...

Linux ssh サーバーの構成コード例

LinuxホストにSSHサーバーをインストールするには、次のターミナルコマンドを使用します: sud...

Vueは水平の斜めの棒グラフを実装します

この記事では、水平傾斜棒グラフを実装するためのVueの具体的なコードを参考までに共有します。具体的な...

CSS カウンターとコンテンツの概要

コンテンツ プロパティは CSS 2.1 で導入され、:before および :after 疑似要素...

進捗バー効果を実現するJavaScript

この記事では、プログレスバー効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...

CSSを使用してすべての子要素を選択する方法の詳細な説明

CSS を使用してすべての子要素を再帰的に選択するにはどうすればよいですか?以下の記事では、CSS ...

MySQL データベースを手動および自動でバックアップする 8 つの方法

MySQL は人気のオープンソースデータベース管理システムとして多くのユーザーが利用しています。デー...

MySQLデータベースにパスワードを入力した後にフラッシュバックする問題の解決策

パスワード入力後にMySQLデータベースがクラッシュする問題と解決策1 ケースの説明最近、基本的な機...

Web 開発 js 文字列連結プレースホルダーと conlose オブジェクト API の詳細な説明

目次プレースホルダーの置き換えコンソール印刷テーブル()ログ、情報、警告、エラーグループ()、グルー...