zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【jvm我能讲两小时006】什么是聚集索引?

JVM索引 什么 小时 我能 006 聚集
2023-09-27 14:29:25 时间

什么是聚集索引?

InnoDB存储引擎表是索引组织表, 即表中数据按照主键顺序存放 。 而聚集索引 (clustered index) 就是按照每 张表的主键构造一棵B+树, 同时叶子节点中存放的即为整张表的行记录数据, 也将聚集索引的叶子节点称为 数据页 。 每个数据页都通过一个双向链表来进行链接。

由于实际的数据页只能按照一棵B+树进行排序, 因此每张表只能拥有一个聚集索引 。在多数情况下, 查询优 化器倾向于采用聚集索引 。 因为聚集索引能够在B+树索引的叶子节点上直接找到数据 。此外, 由于定义了数 据的逻辑顺序, 它对于主键的排序查找和范围查找速度非常快 。 。 叶子节点的数据就是用户所要查询的数据

如:用户需要查询一张注册用户的表, 查询最后注册的10位用户, 由于B+树索引是双向链表的, 用户可以快速 找到最后一个数据页, 并取出10条记录

SELECT * FROM Profile ORDER BY id LIMIT 10;

虽然使用ORDER BY对主键id记录进行排序, 但是在实际过程中并没有进行所谓的filesort操作, 而这就是因为 聚集索引的特点 。 另一个是范围查询 (range query) , 即如果要查找主键某一范围内的数据, 通过叶子节点 的上层中间节点就可以得到页的范围, 之后直接读取数据页即可 。如: SELECT * FROM Profile where id > 1 and id <100;