第 7 章 · 第五节
CREATE INDEX 的格式
索引名后面接 ON 表名,括号里写要索引哪几列。

关键术语
索引字符长度prefix
只拿这一列前几个字节建索引,省空间
单列索引single
括号里只写一列
复合索引composite
括号里写好几列,顺序有讲究
重 点
UNIQUE 建出来的是唯一索引,它既能提速,又顺带把这一列的重复值挡住。
索引名后面接 ON 表名,括号里写要索引哪几列。

UNIQUE 建出来的是唯一索引,它既能提速,又顺带把这一列的重复值挡住。
一个只索引姓名的前六个字节,一个把两列绑在一起。

复合索引的列序不能随便写,写在前面的那一列决定了它能不能被用上。
只索引姓名的前六个字节,会漏掉同姓的人吗?
列定义写完之后,再补几行 INDEX 或者 UNIQUE INDEX。

表刚设计出来就知道要按哪一列查,就在建表时一起写,省得事后再补。
建表时写的 PRIMARY KEY 算不算一个索引?
教室编号加教学楼名两列合起来不许重复。

两列合起来唯一,单看任一列都可以重复,这正是复合唯一索引的用处。
唯一的是两列合起来的组合,只有两列都一样才算重复。
ALTER TABLE 加上 ADD INDEX,一条语句能补好几个。

事后补索引会锁表重建,几百万行的表上别在上班时间做这件事。
| 写法 | 什么时候用 |
|---|---|
| CREATE INDEX | 补单独一个 |
| ALTER TABLE ADD | 一次补好几个 |
上线之后才发现查得慢,还来得及补索引吗?
右键表的 Indexes 节点选 Create Index,勾要索引的列。

界面上要填的索引名、字段长度、索引类型,就是命令里那几个参数。
界面上还有一栏问加索引时锁不锁表,命令行的默认值就是尽量不锁。