===============
1 索引是什么
Mysql官方对索引的定义:索引是帮助 Mysql 高效获取数据的数据结构。所以,索引的本质:索引是数据结构。索引的目的在于提高查询效率,可类比字典。
索引:排好序的快速查找数据结构
用于:排序 + 快速查找。注意,是两种功能。
数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。
索引通常是指B树索引。
2 索引优势
类似大学图书馆书目索引,提高数据检索的效率,降低数据库的 IO 成本;
通过索引列对数据进行排序,降低数据排序的成本,降低了 CPU 的消耗;
3 索引劣势
索引也是一张表,保存了主键与索引字段,并指向实体表的记录,所以索引列也是要占用磁盘空间的;
虽然提高了查询速度,但是会降低更新速度,如 INSERT、UPDATE、DELETE 操作;
4 哪些情况适合建索引
- 主键自动建立唯一索引
- 频繁作为查询条件的字段应该创建索引
- 查询中与其它表关联的字段,外键关系建立索引
- 查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度
- 查询中统计或者分组字段
5 哪些情况不适合建索引
- 频繁更新的字段
- Where 条件中用不到的字段
- 表记录太少
- 经常增删改的表
- 散列太小的字段,如性别、国籍
======下一篇======