MySql的索引?

MySql的索引?

1 Hash索引?
通过hashCode去匹配,查找数据库中唯一值的速度很快,不支持范围查找,联合索引也不支持
只适用于select * from table where id = 5;只适用于等于的情况
2红黑树?
数据量大的情况下,红黑树的树太高了,查询最深处的数据时,磁盘读取次数较多
在这里插入图片描述
3 B树? (多叉搜索树) //MongoDB使用的数据结构
B树的每个节点都存储key-value,时间复杂度与节点位置有关,最好是O(1),B树的每个节点与value连在一起,无法进行区间查找.

4 B+树? //MySQL使用的数据结构
所有的数据由存储在叶子节点,时间复杂度固定为树的深度,logN,B+树的每个节点都连在一起,可以进行范围查找.

B树的分裂公式:[ceil(m/2)-1]<=n<=m-1
----m: 表示B树有m个叉
----n: 表示每个节点最多包含的数据量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5 联合索引?
联合索引必须是按照顺序使用,而且需要全部使用
建立一个 a+b+c的索引
实际上还是只有一颗索引树,最左匹配原则,谁在最左边,就以谁来建索引
Select * from user where a = 1 and b = 2 and c = 3 //会走全部索引

Select * from user where b = 2 and c = 3 and a = 1//mysql做了优化,也可以使用索引

Select * from user where a = 1 //会走a索引

Select * from user where b = ‘xxx’ and c = 10 //索引会失效

Select * from user where a = 1 and c = “xxx” //会走a的索引,因为没走b索引,c也会失效

Select * from user where a = 1 and b > 2 and c = 3 //会走a,b的索引,c的索引会失效

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值