数据库索引
1.数据库索引
什么是索引
索引是提高数据库查询效率的一种数据库额外存储的数据结构
2.创建索引的原则(索引的优缺点)
优点:
索引可以提高sql的查询效率
索引可以提高sql的排序效率
索引可以提高sql的分组效率
缺点:
- 索引会降低增删改的效率
原则:
主键或者区分度比较高的字段可以建立索引
经常在where后面的字段可以建立索引
需要在order by,group by后面使用的字段
需要通过外键关联其它表的字段可以创建索引
表中数据量不大不需要建立索引
经常修改的字段不能建立索引(如账户余额字段)
重复度比较高的字段不能建立索引(如性别)
3.索引数据结构(以mysql为例)
B+树是在B树的基础上又一次改进,主要变化有:
非叶子节点上不存在数据,只保存关键字的索引,所有数据都保存在叶子节点上.
叶子节点上的结尾都会保存右边相邻叶子节点开始数据的指针.
B+树数据结构图:
这样的改变主要提升了两方面:
1.查询的稳定性
2.数据排序方面更加友好.
B+树构建规则:
1.B+树的非叶子节点不保存具体的数据,而只保存关键字的索引,而所有的数据最终都会保存在叶子节点.因为所有数据必须到叶子节点才能获取到,所以每次查询的次数都是一样的,这样一来B+树的查询速度就会比较稳定,所以在数据库的应用层面,B+树就会显得更合适.
2.B+树叶子节点的关键字从小到大有序排列,左边结尾数据都会保存右边节点开始数据的指针.因为叶子节点都是有序排列的,所以B+树对于数据的排序有着更好的支持
3.非叶子节点的子节点数=关键字数,另外一种为非叶子节点的关键字数=子节点数-1,虽然他们数据排列结构不一样,但其原理是一样的.
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小天的博客!
评论
