聚簇与非聚簇索引

  1. 我们平时创建的索引唯一键索引,复合索引,前缀索引都是非聚簇索引,有的也叫辅助索引(secondary index).其数据结构是B+树。
  2. 在MySQL中,聚簇索引没有语句可以生成,在 InnoDB中,数据是按照主键的顺序来进行存储的。叶子节点就是存放每条记录的。由于表所有数据只能按照一个B+树进行排序,每个表只能有一个聚簇索引。
  3. 在MySQL innoDB中,聚簇索引默认就是主键索引。
  4. 如果没有主键,会找一个不为空的唯一索引当该表的聚簇索引。如果没有这样的索引,InnoDB会隐式新建一个索引字段。
  5. 自增ID与UUID的区别,自增ID由于存储连续,写入性能更高,UUID会频繁移动数据保持B+树结构。
  6. 每新建一个非聚簇索引就会增加一个B+树结构,该叶子节点存放了对应索引字段的指和聚簇索引的值,如果条件查询使用该索引,查询会先查询非聚簇索引找到值,如果值会查询的字段直接返回,否则还会去查询聚簇索引的B+树查询到完整的记录,增加IO次数。
  7. 如果添加索引,后面插入数据开销会变大,因为需要维护B+树。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值