diff --git a/ch3.md b/ch3.md index a7fe9e0..cc3a03f 100644 --- a/ch3.md +++ b/ch3.md @@ -310,7 +310,7 @@ B 树在数据库架构中是非常根深蒂固的,为许多工作负载都提 在某些情况下,从索引到堆文件的额外跳跃对读取来说性能损失太大,因此可能希望将被索引的行直接存储在索引中。这被称为聚集索引(clustered index)。例如,在 MySQL 的 InnoDB 存储引擎中,表的主键总是一个聚集索引,次级索引则引用主键(而不是堆文件中的位置)【31】。在 SQL Server 中,可以为每个表指定一个聚集索引【32】。 -在 **聚集索引**(在索引中存储所有的行数据)和 **非聚集索引**(仅在索引中存储对数据的引用)之间的折衷被称为 **覆盖索引(covering index)** 或 **包含列的索引(index with included columns)**,其在索引内存储表的一部分列【33】。这允许通过单独使用索引来处理一些查询(这种情况叫做:索引 **覆盖(cover)** 了查询)【32】。 +在 **聚集索引**(在索引中存储所有的行数据)和 **非聚集索引**(仅在索引中存储对数据的引用)之间的折衷被称为 **覆盖索引(covering index)** 或 **包含列的索引(index with included columns)**,其在索引内存储表的一部分列【33】。这允许通过单独使用索引来处理一些查询(这种情况叫做:索引 **覆盖(cover)** 了的查询)【32】。 与任何类型的数据重复一样,聚集索引和覆盖索引可以加快读取速度,但是它们需要额外的存储空间,并且会增加写入开销。数据库还需要额外的努力来执行事务保证,因为应用程序不应看到任何因为重复而导致的不一致。