MySQL 索引和算法

索引是帮助MySQL高效获取数据的排好序(从小到大)数据结构

索引数据结构

•二叉树    

    .数据量大的情况下树可能会倾斜,查询不稳定

•红黑树

      .数据大的时候树的高度增加,导致查询不稳定,树每增加一高度就是一次IO

      树的高度不可控

•Hash表

   •对索引的key进行一次hash计算就可以定位出数据存储的位置

   •查单个值的很多时候Hash索引要比B+ 树索引更高效

   •但是仅能满足“=”,“IN”,不支持范围查询,实际业务大部分都是范围查找

   •会有hash冲突问题

•B-Tree

   叶子节点没有指针,非叶子节点存data

.B+Tree

  非叶子节点只存索引,叶子节点存索引和data,并用双向指针链接

如果数据表中没有主键索引,数据库会找唯一索引如果都没有数据库自己生成一个rowid来作为索引

InnoDB 聚集索引

   三大特性:双写缓存,自适应哈希索引,buffer pool

   数据结构

      

辅助索引/二级索引  数据结构和主键一致,但是叶子节点不存data,存的是主键ID ,所以除了主键索引是聚集索引,其他都是非聚集的。二级索引是叶子节点保存的ID是无序的,二级索引需要回表查询,引入了MRR机制多范围读取,最大程度的减少回表次数。

联合索引  index(a,b,c) 先用a排序,再用b查询,然后用查询.

自适应哈希索引(AdaptiveHashIndex,AHI) InnoDB存储引擎内部监控索引热数据,创建的哈希索引,InnoDB存储引擎使用的哈希函数采用除法散列方式,其冲突机制采用链表方式。

MyISAM 非聚集索引

   数据结构

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值