1.数据库索引

什么是索引

索引是提高数据库查询效率的一种数据库额外存储的数据结构

2.创建索引的原则(索引的优缺点)

优点:

  1. 索引可以提高sql的查询效率

  2. 索引可以提高sql的排序效率

  3. 索引可以提高sql的分组效率

缺点:

  1. 索引会降低增删改的效率

原则:

  1. 主键或者区分度比较高的字段可以建立索引

  2. 经常在where后面的字段可以建立索引

  3. 需要在order by,group by后面使用的字段

  4. 需要通过外键关联其它表的字段可以创建索引

  5. 表中数据量不大不需要建立索引

  6. 经常修改的字段不能建立索引(如账户余额字段)

  7. 重复度比较高的字段不能建立索引(如性别)

3.索引数据结构(以mysql为例)

B+树是在B树的基础上又一次改进,主要变化有:

非叶子节点上不存在数据,只保存关键字的索引,所有数据都保存在叶子节点上.

叶子节点上的结尾都会保存右边相邻叶子节点开始数据的指针.

B+树数据结构图:

这样的改变主要提升了两方面:

1.查询的稳定性

2.数据排序方面更加友好.

B+树构建规则:

1.B+树的非叶子节点不保存具体的数据,而只保存关键字的索引,而所有的数据最终都会保存在叶子节点.因为所有数据必须到叶子节点才能获取到,所以每次查询的次数都是一样的,这样一来B+树的查询速度就会比较稳定,所以在数据库的应用层面,B+树就会显得更合适.

2.B+树叶子节点的关键字从小到大有序排列,左边结尾数据都会保存右边节点开始数据的指针.因为叶子节点都是有序排列的,所以B+树对于数据的排序有着更好的支持

3.非叶子节点的子节点数=关键字数,另外一种为非叶子节点的关键字数=子节点数-1,虽然他们数据排列结构不一样,但其原理是一样的.