聚集索引 定义
I nnoDB存储引擎表是索引组织表, 即表中数据按照主键顺序存放。而 聚集索引 (clustered i ndex) 就是 按照 每 张 表的主键 构造一棵 B+树 , 同时叶子节点中存放的即为整张表的行记录数据, 也将聚集索引的叶子节点称为 数据页。
每个数据页都通过一个双向链表来进行链接。
由于实际的数据页只能按照一棵B+树进行排序, 因此 每张表 只能拥有 一个聚集索引 。 在多数情况下, 查询优 化器倾向于采用聚集索引。
因为聚集索引能够在B+树索引的叶子节点上直接找到数据。
此外, 由于定义了数 据的逻辑顺序, 它对于 主键 的排序查找和范围查找速度非常快。
叶子节点的数据就是用户所要查询的数据 如:用户需要查询一张注册用户的表, 查询最后注册的10位用户, 由于B+树索引是双向链表的, 用户可以快速 找到最后一个数据页, 并取出10条记录 SELECT * FROM Profile ORDER BY i d LIMIT 10;
虽然使用ORDER BY对主键id记录进行排序, 但是在实际过程中并没有进行所谓的filesort操作, 而这就是因为 聚集索引的特点。
另一个是范围查询 ( range query) , 即如果要查找主键某一范围内的数据, 通过叶子节点 的上层中间节点就可以得到页的范围, 之后直接读取数据页即可。如:SELECT * FROM Profile where i d > 1 and i d <1000
【什么是MySQL中的聚集索引】
最新推荐文章于 2024-04-13 18:31:22 发布