Mysql索引分析

在InnoDB中,索引有三种类型:普通索引、唯一索引、全文索引

索引存储模型推演

二叉查找树
左子树所有节点都小于父节点,右子树所有节点都大于父节点。投射到平面,就是一个有序线性表
优点:快速查找、快速插入
缺点:查找时间和深度相关,最坏的情况下复杂度会退化成O(n),也就是退化成链表

平衡二叉树(AVL树)
因为二叉树深度差距太大,不够平衡。
而平衡二叉树左右子树深度相差不能超过1
通过左旋右旋来保持平衡
可是因为父节点只有左右两个子节点。而InnoDB一页有16KB,一个节点肯定装不满,就需要多次IO查找
深度太大

多路平衡查找树(B树)
路数比关键字多1,可以有多个分叉,减少树的深度
通过分裂合并来保持平衡
如果键有序,可以很快写满一页,然后写另一页。如果键无序,页会频繁分裂

B+树
关键字和路数相等
根节点和枝叶节点不会存储数据,只有叶子节点才存储数据
命中索引也会一直找到叶子节点,保证查询速度稳定
每一个叶子结点增加了一个指向相邻节点的指针,它的最后一个数据会指向下一个节点的第一个数据,形成有序链表

为什么不用红黑树?

红黑树只有两路
红黑树叶子结点为null
不够平衡

什么时候不能用到索引?

索引列上使用函数;表达式计算
字符串不加引号,隐式转换
like条件前面带’%’
负向查询 not in 、!=、not like

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值