# 二级索引

__*Secondary Index*__

+ 二级索引:主键以外的索引 
+ 唯一二级索引:具有约束条件的二级索引
+ 创建二级索引: 
  + 创建表时使用 INDEX 或 KEY 关键字
  + 对现有的表:
    + `ALTER TABLE ... ADD [UNIQUE] INDEX/KEY ...`
    + `CREATE INDEX ... ON ...`

```
tidb> CREATE TABLE test.ggg (id INT, name CHAR(30), ~!@KEY@!~(name));

tidb> ~!@CREATE INDEX@!~ ggg_idx ON test.ggg (id);

tidb> CREATE TABLE test.gg (id INT, id2 INT, name CHAR(30), ~!@INDEX@!~(name));

tidb> ALTER TABLE test.gg ~!@ADD KEY@!~ (id);

tidb> ALTER TABLE test.gg ~!@ADD INDEX@!~ (id2);
```
----------------------------------------------------
```
tidb> SHOW CREATE TABLE test.gg\G
*************************** 1. row ***************************
       Table: gg
Create Table: CREATE TABLE `gg` (
  `id` int(11) DEFAULT NULL,
  `id2` int(11) DEFAULT NULL,
  `name` char(30) DEFAULT NULL,
  KEY `name` (`name`),
  KEY `id` (`id`),
  KEY `id2` (`id2`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
1 row in set (0.01 sec)
```