mysql索引:Innodb和MyIsam引擎

mysql主要有两大存储引擎,innodb和myIsam

两大引擎的底层索引实现也有区别。

innodb: 主要是聚集索引和辅助索引

聚集索引,实现是将主键id作为索引,以B+树的结构存储,叶子节点存储的是整条id以及其对应的表记录,id唯一,每次通过id走索引直接查到对应的记录,效率最高;

辅助索引,以某个字段作为索引,以B+树结构存储,叶子节点存的是字段值以及对应的id主键,根据字段索引查到id,再根据id主键索引查到对应记录,走了两边,效率较低;

 

myIsam:非聚集索引

非聚集索引,将 数据 与 索引 分开存储,表数据存储顺序与索引顺序无关。

主键id的索引是以B+树结构存储,叶子节点存放的是id和对应的表记录内存地址,通过id索引查到表记录地址,再找到对应记录;

效率对比:聚簇索引>非聚簇索引>辅助索引

 

 

mysql 覆盖索引

如果一个索引包含(或覆盖)所有需要查询的字段的值,成为覆盖索引。即只需扫描索引而无须回表。

只扫描索引而无需回表的优点:
    1.索引条目通常远小于数据行大小,只需要读取索引,则mysql会极大地减少数据访问量。
    2.因为索引是按照列值顺序存储的,所以对于IO密集的范围查找会比随机从磁盘读取每一行数据的IO少很多。
    3.一些存储引擎如myisam在内存中只缓存索引,数据则依赖于操作系统来缓存,因此要访问数据需要一次系统调用
    4.innodb的聚簇索引,覆盖索引对innodb表特别有用。(innodb的二级索引在叶子节点中保存了行的主键值,所以如果二级主键能够覆盖查询,则可以避免对主键索引的二次查询)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值