自学内容网 自学内容网

Mysql 的 B+ 树是否包含行数据?

在 MySQL 中,是否在 B+树 的叶子节点上存储完整的行数据,取决于使用的 存储引擎 和 索引类型:

聚簇索引 (Clustered Index)
叶子节点包含完整的行数据。
适用场景:MySQL InnoDB 存储引擎的主键索引(或聚簇索引)。
特点:

  • 聚簇索引的叶子节点直接存储了表中的完整数据行。
  • 如果查询条件可以通过聚簇索引找到所需行,则无需回表。

辅助索引 (Secondary Index)
叶子节点不包含完整的行数据。
适用场景:InnoDB 辅助索引。
特点:

  • 辅助索引的叶子节点存储的是索引列的值和主键值(Row ID)。
  • 如果查询需要其他字段,必须通过主键值(Row ID)回到聚簇索引中读取完整的行数据。

MyISAM 存储引擎
叶子节点不包含行数据。
适用场景:MyISAM 存储引擎(或其他非聚簇存储引擎)。
特点:

  • MyISAM 的 B+树索引(包括主键索引和辅助索引)的叶子节点只存储索引字段值和对应数据的物理地址。
  • MyISAM 表的索引和数据是分开的,因此查询数据时总是需要通过索引找到物理地址,然后再读取对应的数据。
  • 所有索引(包括主键索引和辅助索引)的叶子节点只存储索引字段值和数据行地址(指向磁盘位置的指针)。
  • 需要通过指针回到表中获取完整数据。

原文地址:https://blog.csdn.net/qq_41893505/article/details/144329244

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!