总结(Summary)
重难点分析
- 索引的创建
创建表的同时创建索引(create table tablename(...,index 索引名 (字段名)))
创建表后通过create语句创建索引(create index 索引名 on 表名(字段名))
创建表后通过alter语句创建索引(alter table add index 索引名(字段名))
查看索引: show index from student;
- 索引数据结构(B+Tree)及原理
B+树是一种'平衡'多叉树,是B-树的Plus版,主要用于索引的存储结构,提高了查询效率
FAQ分析
- 什么是索引?(一种数据结构)
- 索引的优势、劣势? (优势:提高查询效率;劣势:会增加一定维护成本)
- 索引是如何分类的?(应用、物理存储、数据结构)
- 我们如何创建及应用索引?(程序员只负责创建,应用由数据库优化器说了算)
- MySQL InnoDB引擎默认的索引结构是什么?(B+Tree)
- InnoDB存储引擎为什么使用B+Tree作为索引的数据结构?(平衡、高度、范围查询)
- B+树有什么特点?
存储索引数量多;相同数据量下层级少了;有双向链表的连接、范围查询速度快
- 什么是聚簇(集)索引、非聚簇索引,它们有什么特点?
聚簇(集)索引:索引和数据存储在一起
非聚簇索引:索引和数据是单独存储的
- 什么是一级索引、二级索引,他们分别存储的是什么?
索引和数据存储在一起,都存储在同一个B+tree中的叶子节点。一般主键索引都是一级索引。
二级索引树的叶子节点存储的是主键而不是数据。也就是说,在找到索引后,得到对应的主键,再回到一级索引中找主键对应的数据记录。
- 什么是回表查询?(基于二级索引找到一级索引,然后基于一级索引查找数据)