mysql clustered index

 · 2018-4-12 · 次阅读


mysql聚集索引的理解

InnoDB使用聚集索引存储数据,到底什么是聚集索引,聚集索引直接定义了表中数据的真实的物理存储顺序。聚集索引就像一个电话簿,按照姓氏排序,
并且电话号码紧跟着后面
。一个表有且只有一个聚集索引,默认主键作为聚集索引,没有主键则以第一个唯一非空键作为聚集索引,如果也没有则InnoDB
会生成一个隐藏id作为聚集索引。

注:聚集索引中的每个叶子节点包含主键值、事务ID、回滚指针(rollback pointer用于事务和MVCC)和余下的列

聚集索引的优缺点

优点:

  • 通过主键查询和区间查询非常快,聚集索引能够快速定位区间的开始位置与结束位置。
  • 如果某个字段经常用来排序并且该字段就是聚集索引,那么排序时间就是数据查询时间。

缺点:

  • 聚集索引被定义的很大,辅助索引也会变得很大,因为辅助索引都存储了聚集索引的key。
  • 聚集索引被个更改会涉及聚集索引的重排,聚集索引的更改代价很高。
  • 插入可能比较慢,如果数据不是按照主键的顺序插入。

辅助索引

InnoDB不存在辅助索引的更新,辅助索引的更新意味着先删除再添加。

聚集索引与辅助索引的区别

聚集索引既存储了索引,也存储了行值。辅助索引存储的是主键值和索引key,辅助索引一般包含两次查找,一次查找索引自身,一次查找主键(聚集索引)
获取数据行。