第 7 章 · 第四节
索引是给数据建一本目录
没有目录只能一页页翻,有目录就能直奔那一页。

试一试查一个字的两种办法
查「魏」字
一本字典两种查法,翻的页数差着好几十倍。
重 点
索引存的是一组键值对,键是那一列的值,值是这一行在哪儿。
想一想
字典要是不带前面那几页拼音表,会怎么样?
没有目录只能一页页翻,有目录就能直奔那一页。

索引存的是一组键值对,键是那一列的值,值是这一行在哪儿。
字典要是不带前面那几页拼音表,会怎么样?
按特征、按列数、按存储方式、按和数据的物理关系。

| 按什么分 | 分出哪几种 |
|---|---|
| 索引的特征 | 普通、唯一、主键 |
| 涉及几列 | 单列、复合 |
| 怎么存 | B-Tree、Hash |
| 和数据的关系 | 聚集、非聚集 |
日常用得最多的是 B-Tree 的普通索引和唯一索引,其余几种知道有就行。
建表时写下 PRIMARY KEY,MySQL 已经悄悄给你建好了一个唯一索引。
查是快了,但每插一行、每改一行都要顺带更新每一份索引。

索引是拿空间和写入速度去换查询速度,重复值多的列建了也没什么用。
课件说给视图建索引能提速,MySQL 其实不支持这件事,那是别家数据库的说法。
建索引有三种写法,看和删各有两条命令。

三种写法建出来的索引没有任何区别,区别只在于表是不是已经建好了。