既存のカラムにINDEXを追加する。

テーブル内のカラムに対し INDEX を設定すると、
そのカラムをキーに検索を行った時のパフォーマンス
の向上がはかれます。

既存のカラムにこのINDEXを設定するには以下のように
ALTER TABLEを使用します。

ALTER TABLE  ADD INDEX ();

実施例を以下に記載します。

mysql> show fields from mytest;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(100) | YES  |     | NULL    |                |
| age   | int(11)      | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.03 sec)

mysql> ALTER TABLE mytest ADD INDEX (name);
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show fields from mytest;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(100) | YES  | MUL | NULL    |                |
| age   | int(11)      | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)

INDEXが設定されたカラムには上記のように”Key”に”MUL”が設定されます。

これは”MULTI VALUE”という意味で、ユニークなキーではなく、同じ値が
あり得るキーですよ。という意味っぽいです。

そこで、このカラムにさらに UNIQUEキー を設定してみると、Keyの
値が”UNI”に代わりました。
これはユニークなキーってことですね。

mysql>
mysql> ALTER TABLE mytest ADD UNIQUE (name);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show fields from mytest;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(100) | YES  | UNI | NULL    |                |
| age   | int(11)      | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>