mysql之索引

索引的底层数据结构

mysql中索引分结构分为B+treehash两种存储结构

1>.hash:做等值查询("=","IN"和"<=>"查询),不能用做顺序范围查询(因为hash计算过后的索引并不一能保证之前的大小关系),数据大量的hash值相等容易hash碰撞(hashMap通过链地址法解决,后加入变换红黑树);组合索引:不支持模糊匹配(hash值是通过对组合索引计算的)

2>.B+tree:每个叶子节点才存储数据,其他节点存储索引,叶子节点按照从小到大范围排序,可以做范围查询

B-tree和B+tree区别:

(1).B-tree所有节点既放key也放value,而B+tree只有叶子节点放key-value,其他节点只放key

(2).B-tree所有叶子节点都是独立的,而B+tree叶子节点有一条引用链指向相邻节点

(3).B-tree的检索是做二分查找,可能没到叶子节点已经结束,而B+tree每次都需要检索到叶子节点,B树的每一个节点都包含key和value,因此经常访问的元素可能离根节点更近,因此访问也更迅速.

(4).

索引类型

(1)主键索引:一个表只能有一个主键,且不能为null,不能重复,主键列使用主键索引;当没有显示指定主键的时候,则寻找唯一索引字段当主键,否则 InnoDB自动创建 6Byte的自增主键

(2)二级索引(辅助索引)

二级索引的叶子节点存储的都是主键的值,可以定位到主键

聚集索引与非聚集索引

InnoDB使用聚集索引,即数据和索引存储在同一个文件中;而MyISAM索引文件和数据分离

非聚集索引不一定回表查询(SQL 查的就是主键时不需要)

覆盖索引

覆盖索引即需要查询的字段正好是索引的字段,那么直接根据该索引,就可以查到数据了, 而无需回表查询

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值