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

推薦する

Vue+Element UI でサマリーポップアップウィンドウを実装するプロセス全体

シナリオ: 検査文書には n 個の検査詳細があり、検査詳細には n 個の検査項目があります。実装効果...

スローモーションアニメーション効果を実現するJavaScript

この記事では、スローモーションアニメーション効果を実現するためのJavaScriptの具体的なコード...

フレックスマルチカラムレイアウトで発生する問題と解決策の詳細な説明

フレックス レイアウトは間違いなくシンプルで使いやすいです。レイアウトをよりシンプルかつ高速にします...

Vue は Echarts をインポートして折れ線グラフを実現します

この記事では、VueでEchartsをインポートして線散布図を実現する具体的なコードを参考までに共有...

MySQL のユーザー権限を照会する方法の概要

MySQLユーザー権限を表示する2つの方法を紹介します1. MySQL grantsコマンドを使用す...

Dockerコンテナを更新、パッケージ化、Alibaba Cloudにアップロードする方法

今回は、実行中のコンテナをイメージにパッケージ化して Alibaba Cloud にアップロードし、...

JavaScript ESの新機能letとconstキーワードに基づく

目次1. letキーワード1.1 基本的な使い方1.2 変動昇進はない1.3 一時的なデッドゾーン1...

W3C チュートリアル (8): W3C XML スキーマのアクティビティ

XML スキーマは、DTD に代わる XML ベースのものです。 XML スキーマは、DTD に代わ...

Zabbixのインストールと展開の詳細な説明

序文Zabbix は最も主流のオープンソース監視ソリューションの 1 つです。導入自体は難しくありま...

MySQLのインデックス設計の原則と一般的なインデックスの違いについて簡単に説明します。

インデックス定義: ディスク上に保存される個別のデータベース構造であり、データ テーブル内のすべての...

MySQL の日付と時刻関数の概要 (MySQL 5.X)

1. MySQLは現在の日付と時刻を取得する関数1.1 現在の日付 + 時刻 (日付 + 時刻) ...

js における浅いコピーと深いコピーの詳細な説明

目次1. jsメモリ2. 譲渡3. 浅いコピー4. ディープコピー序文:以下の記事を読む前に、記憶に...

MySQLサービスが起動しても接続されない問題の解決策

mysql サービスは開始されていますが、接続できません。この問題を解決するにはどうすればよいでしょ...

この記事ではCSSの組み合わせセレクターの使い方を説明します

CSS 組み合わせセレクターには、単純なセレクターのさまざまな組み合わせが含まれます。 CSS3 に...

MySQL のインデックス有効条件とインデックス無効条件の結合

目次1. ジョイントインデックスの故障の条件2. インデックス失敗の条件1. ジョイントインデックス...