关于聚簇索引和非聚簇索引的内容。
聚簇索引不是一种单独的索引类型,而是一种数据存储方式。将数据存储与索引放到了一块,找到索引也就找到了数据。
非聚簇索引也叫二级索引,将数据存储与索引分开结构,索引结构的叶子节点指向了数据的对应行地址,通过地址才能找到对应的数据。
InnoDB 中,在聚簇索引之上创建的索引称之为辅助索引,辅助索引访问数据总是需要二次查找,非聚簇索引都是辅助索引,像组合索引、前缀索引、唯一索引,辅助索引叶子节点存储的不再是行的物理位置,而是主键值。
当表有聚簇索引时,它的数据行实际存放在索引的叶子节点中。
聚簇索引默认是主键,如果没有定义主键,InnoDB 会选择一个唯一的非空索引代替。如果没有这样的索引,InnoDB 会隐式的定义一个主键来作为聚簇索引。InnoDB 只聚集在同一个页面的记录。
聚簇索引的优缺点, 优点:
缺点:
聚簇索引的每个叶子节点都包含了主键值、事务 ID、用于事务和 MVCC 的回滚指针以及所有的剩余列。如果主键是一个列前缀索引,InnoDB 也会包含完整的主键列和剩下的其他列。
使用 InnoDB 时应该尽可能地按照主键顺序插入数据,并且尽可能地使用单调增加的聚簇键的值来插入新行。
Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://lixj.fun/archives/聚簇索引和非聚簇索引