mysql索引概念、分类及创建高性能索引

前期数据结构准备:

重点:B+tree
B+tree是由二叉树----》二叉平衡树(AVL树)----》平衡多叉树(B Tree(N叉树))-----》B+ Tree

使用B+tree的本质是提升查找效率,那么怎么查找更快?二分查找和顺序查找

二叉查找树:左边小于右边,右边大于或等于根节点的值
缺点:有可能只有左边或者只有右边,查找效率相当于链表,这样的二叉查找树没有意义
进化---》二叉平衡查找树:

平衡二叉查找树(AVL树)
满足二叉查找树
任何根节点,左右两边的高度差(单个叶子节点不能>1)的绝对值不能超过1(通过旋转,使高度绝对值小于1--可以等于1)
缺点:当子节点越来越多,树的深度也越来越大,会影响查找效率
进化---》多叉平衡查找树(BTree和B+Tree)

B TREE和B+Tree都是多叉平衡查找树,树的高度一般2~3层

BTree在非叶子节点也存放数据,查询的话,返回的数据会更多,占用IO
B+Tree在非叶子节点不存放数据,只存储索引,只在最底层叶子节点存放数据,返回的数据相对少
B+Tree的叶子节点之间使用的指针进行链接,变成链表(双向链表)的结构,进行了排序,可以进行双向排序
B*树在非叶子节点之间也用指针进行链接,oracle使用的是B*树
B+Tree查出来的数据都是排好序的

B+tree生成网址:B-Tree Visualization

一、官方定义的索引:帮助mysql高效获取数据的数据结构,

本质上是一种数据结构;

作用是用来高效获取数据的;

二、索引的分类

(1)按数据结构分:

B+Tree:生成一颗N叉树,最下层的叶子节点使用双向链表的方式进行链接,最下层既存储了索引,也存储了对应的数据

Hash索引:根据索引字段生成hashCode进行存储;

影响B+Tree查询效率的,一般是取决于B+Tree的高度,一般情况下,mysql优化器会将B+Tree的高度设置为3~4层
对于精确查找(=、in)使用Hash索引,只需要精确匹配一次即可获取结果,效率比使用B+Tree索引高;
mysql5.7在InnoDB开启了自适应Hash索引,即根据热点数据分析后,会自动创建Hash索引,不需要程序员手动去创建;通过下面sql可以查到:

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值