定义
一直对聚簇索引的概念不是很清晰。之前的理解(包括网路上的解释),聚簇索引和非聚簇索引的区别是:
叶子节点是否存放一整行记录
以mysql为例:
- innodb引擎,主键使用的是聚簇索引,非主键使用的是非聚簇索引。
- myisam引擎,不管主键还是非主键,使用的都是非聚簇索引。
并且还给了如上的示意图。
但是我一直对这个解释存疑,不能直观的把聚簇索引的定义和innodb的主键聚簇索引联系在一起。
直到我读到了[数据库系统内幕]这本书中对聚簇索引的:
书中还详细讲解到:聚簇索引中的数据记录,通常与索引存储于同一个文件中,有时也存放在单独的聚簇文件中,而这些文件均保留了键的顺序。如果数据存储在单独的文件中,且其顺序不遵循键顺序,则索引为非聚簇索引。
参考
[数据库系统内幕] 2020-05第一版 p23