堆表 索引组织表

Posted mhabbyo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了堆表 索引组织表相关的知识,希望对你有一定的参考价值。

堆表 :

  • 堆就是无序数据的集合,索引就是将数据变得有序,在索引中键值有序,数据还是无序的
  • 数据存放在数据里面,索引存放在索引里
  • 堆表中,主键索引和普通索引一样的,叶子节点存放的是指向堆表中数据的指针(可以是一个页编号加偏移量),指向物理地址,没有回表的说法
  • 堆表中,主键和普通索引基本上没区别,和非空的唯一索引没区别
  • mysql 的 myisam 引擎,oracle pg 都支持的是堆表

 

索引组织表:

  • innodb 引擎支持的就是索引组织表
  • 对于主键的索引,页子节点存放了一整行所有数据,其他索引称为辅助索引(二级索引),它的页子节点只是存放了键值和主键值
  • 主键包含了一张表的所有数据,因为主键索引的页子节点中保存了每一行的完整记录,包括所有列。如果没有主键,MySQL会自动帮你加一个主键,但是对用户不可见
  • innodb中数据存放在聚集索引中,换言之,按照主键的方式来组织数据的
  • 其他索引(唯一索引,普通索引)的页子节点存放该索引列的键值和主键值
  • 不管是什么索引非页子节点存放的存放的就是键值和指针,不存数据,这个指针在innodb中是6个bit,键值就看数据大小了

以上是关于堆表 索引组织表的主要内容,如果未能解决你的问题,请参考以下文章

04.索引-聚集索引 堆表聚集表聚集索引结构

基本优化实践1.2索引优化——查看堆表查看索引使用情况查看索引碎片率

99.索引-TODO

PostgreSQL之堆表存储(Heap Table)

SQLSERVER新建一张表然后在该表的其中一个字段上建立一个非聚集索引,那麽这张表是堆表还是B树结构的表

SQL SERVER大话存储结构