mysqlにインデックスを追加する方法

青灯夜游
リリース: 2020-09-16 14:17:38
オリジナル
31369 人が閲覧しました

Mysql のインデックス追加方法: [CONSTRAINT PRIMARY KEY | INDEX [<インデックス名>] [<インデックス タイプ>]

mysqlにインデックスを追加する方法

mysql では、テーブルの作成中にインデックスを作成 (CREATE TABLE) できますが、後で作成することもできます。テーブルのインデックスを作成するには、CREATE INDEX ステートメントまたは ALTER TABLE ステートメントを使用します。

(ビデオ チュートリアルの推奨: mysql ビデオ チュートリアル)

1. CREATE INDEX ステートメントを使用します

CREATE INDEX ステートメントは既存のテーブルにインデックスを作成しますが、このステートメントでは主キーを作成できません。

CREATE INDEX [<索引名>] ON <表名> (<列名> [<长度>] [ ASC | DESC])
ログイン後にコピー

構文は次のとおりです。

●<インデックス名>: インデックス名を指定します。テーブルには複数のインデックスを作成できますが、各インデックスにはテーブル内で一意の名前が付けられます。

##● <テーブル名>: インデックスを作成するテーブルの名前を指定します。

##● <カラム名>: インデックスを作成するカラム名を指定します。通常、クエリ ステートメントの JOIN 句と WHERE 句に頻繁に現れる列をインデックス列として使用することを検討できます。

##●<長さ>: オプション。列の前にある長さの文字を使用してインデックスを作成することを指定します。列の一部を使用してインデックスを作成すると、インデックス ファイルのサイズが削減され、インデックス列が占める領域を節約できます。場合によっては、列のプレフィックスのみにインデックスを付けることができます。インデックス列の長さの最大制限は 255 バイト (MyISAM および InnoDB テーブルの場合は 1000 バイト) です。インデックス列の長さがこの制限を超える場合は、列のプレフィックスを使用してのみインデックスを作成できます。さらに、BLOB または TEXT 型の列も接頭辞インデックスを使用する必要があります。

# ASC|DESC: オプション。 ASC はインデックスが昇順でソートされることを指定し、DESC はインデックスが降順でソートされることを指定します。デフォルトは ASC です。

2. CREATE TABLE ステートメントを使用します

テーブルの作成 (CREATE TABLE) と同時にインデックスを作成できます。形式:

1. 主キー インデックスの作成

CONSTRAINT PRIMARY KEY [索引类型] (<列名>,…)
ログイン後にコピー

CREATE TABLE ステートメントを使用して列オプションを定義する場合、列定義の直後に PRIMARY KEY を追加することで主キーを作成できます。主キーが複数の列から構成される複数列インデックスの場合、この方法は使用できず、ステートメントの最後に PRIMARY KRY (<列名>,...) 句を追加することによってのみ実装できます。 。

2. 一般インデックスの作成

 KEY | INDEX [<索引名>] [<索引类型>] (<列名>,…)
ログイン後にコピー

3. 一意のインデックスの作成

UNIQUE [ INDEX | KEY] [<索引名>] [<索引类型>] (<列名>,…)
ログイン後にコピー

4. 外部キー インデックスの作成

FOREIGN KEY <索引名> <列名>
ログイン後にコピー

例1:

テーブル tb_stu_info を作成し、テーブルの高さフィールドに一般インデックスを作成します。

mysql> CREATE TABLE tb_stu_info
    -> (
    -> id INT NOT NULL,
    -> name CHAR(45) DEFAULT NULL,
    -> dept_id INT DEFAULT NULL,
    -> age INT DEFAULT NULL,
    -> height INT DEFAULT NULL,
    -> INDEX(height)
    -> );
ログイン後にコピー
例 2: テーブル tb_stu_info2 を作成し、UNIQUE キーワードを使用してテーブルの id フィールドに一意のインデックスを作成します。
mysql> CREATE TABLE tb_stu_info2
    -> (
    -> id INT NOT NULL,
    -> name CHAR(45) DEFAULT NULL,
    -> dept_id INT DEFAULT NULL,
    -> age INT DEFAULT NULL,
    -> height INT DEFAULT NULL,
    -> UNIQUE INDEX(id)
    -> );
ログイン後にコピー

3. ALTER TABLE ステートメントを使用する

ALTER TABLE ステートメントを使用してテーブルを変更する際に、以下を追加することもできます。既存のテーブルを変更し、インデックスを追加します。具体的な方法は、次の構文コンポーネントの 1 つ以上を ALTER TABLE ステートメントに追加することです。

1. 主キー インデックスを作成します

ADD PRIMARY KEY [<索引类型>] (<列名>,…)
ログイン後にコピー

2. 一般インデックスを作成します

ADD INDEX [<索引名>] [<索引类型>] (<列名>,…)
ログイン後にコピー

3. 一意のインデックスを作成します

ADD UNIQUE [ INDEX | KEY] [<索引名>] [<索引类型>] (<列名>,…)
ログイン後にコピー

4.外部キー インデックス

ADD FOREIGN KEY [<索引名>] (<列名>,…)
ログイン後にコピー

例 1:

テーブル tb_stu_info3 を作成した後、UNIQUE キーワードを使用してテーブルの id フィールドに一意のインデックスを作成します。

mysql> CREATE TABLE tb_stu_info3
    -> (
    -> id INT NOT NULL,
    -> name CHAR(45) DEFAULT NULL,
    -> dept_id INT DEFAULT NULL,
    -> age INT DEFAULT NULL,
    -> height INT DEFAULT NULL,
    -> );
Query OK,0 rows affected (0.40 sec)
mysql>ALTER TABLE tb_stu_info3 ADD UNIQUE (id) ;
ログイン後にコピー

4. インデックス情報の表示

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

例:

mysql> SHOW CREATE TABLE tb_stu_info\G
*************************** 1. row ***************************
       Table: tb_stu_info
Create Table: CREATE TABLE `tb_stu_info` (
  `id` int(11) NOT NULL,
  `name` char(45) DEFAULT NULL,
  `dept_id` int(11) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `height` int(11) DEFAULT NULL,
  KEY `height` (`height`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
1 row in set (0.01 sec)
ログイン後にコピー

以上がmysqlにインデックスを追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート