【后端面经】MySQL主键、唯一索引、联合索引的区别和作用
0. 简介
索引是一类特殊的文件
,用来存储检索信息,使数据库查找更加快速。
1. 主键
主键是一类特殊的唯一索引,选择某一列元素作为主键,用来表示每一行元素的特殊性,其特点如下
- 在一个数据表中只有一个主键;
- 主键不能为空(null);
- 主键的列数据不能重复(唯一索引的特点)。
2. 唯一索引
唯一索引是数据库中的一个索引类型,用来保证某列元素的数据唯一性,其特点如下:
- 一个数据表中可以有多个唯一索引;
- 唯一索引可以为空(null);
- 唯一索引的列数据不能重复。
3. 联合索引
当一个索引由多个列组成时,称为联合索引,主要用于快速查找某一特殊元素,其特点如下:
- 列顺序很重要:ABC和CBA是两类不同的联合索引;
- 一个数据表中可以有多个联合索引。
4. 索引对数据库操作的影响
索引的使用目的是为了加快查找数据的速度。
- 读(查找数据)
通过检索索引文件而不是整个数据库文件,能够加快读数据的速度。 - 写(更新数据、增删改)
索引文件是独立于数据文件的,因此在写数据的时候,需要同时更新索引文件和数据文件,因此会降低写数据的速度。
5. 其他索引
5.1 普通索引
和一般索引相比,允许列数据重复,作用是加快数据访问速度。特点如下:
- 一个数据表中可以有多个唯一索引;
- 普通索引可以为空(null);
- 普通索引的列数据能重复。
5.2 全文索引
用来加快对大文本数据关键字的检索,MySQL5.6
之后InnoDB也支持该索引。
5.3 前缀索引
仅针对字符串类型的数据,只索引字符串的前几个字符,而不是整个字符串。因此索引文件更小。
6. 总结
对上述的几种索引的特点对比如下所示: