数据库之聚集索引和非聚集索引的区别

聚集索引和非聚集索引的区别

1、聚集索引

  • 文件中的每个搜索码值都对应一个索引值。一个表只能创建一个聚集索引,叶子节点就是对应的数据全部列的值
  • 数据行的物理顺序与列值的顺序相同,如果我们查询id比较靠后的数据,那么这行数据的地址在磁盘中的物理地址也会比较靠后。而且由于物理排列方式与聚集索引的顺序相同,所以也就只能建立一个聚集索引了。
  • B+Tree结构

2、非聚集索引

  • 文件只为索引码的某些值建立索引项,并存储该行主键值

  • 该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同,故一个表中可以拥有多个非聚集索引。

  • 非聚集索引在索引没有覆盖到对应的列的时候需要进行二次查询

  • B+Tree结构

在这里插入图片描述
上图可以看出,聚集索引(主键索引)查询id为7的索引数据只需要一次查询,而非聚集索引(辅助索引)查询到自己所含有的值,还要根据存储的主键值去查询剩余的数据,这便是二次查询,实际使用中,我们应该尽量避免二次查询

总结

  • 聚集索引的查询效率要比非聚集索引的效率要高,但是如果需要频繁去改变聚集索引的值,写入性能并不高,因为需要移动对应数据的物理位置。
  • 非聚集索引在查询的时候可以的话就避免二次查询,这样性能会大幅提升。这点我们可以采用组合索引进行查询
  • 不是所有的表都适合建立索引,只有数据量大表才适合建立索引,且建立在选择性高的列或者我们频繁使用的列上面性能会更好。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值