mysql 聚簇索引表_mysql – 什么是聚簇索引表?

我可能错了,但在互联网上似乎有不同意见. SQL Server,MySQL,DB2和PostgreSQL显示了这些表的不同定义.

在阅读了不同供应商的数据(数据库手册,用户帖子等)之后,我能够区分出三种类型的感兴趣的表(对于这个问题,有许多,更多类型没有兴趣).请多多包涵:

>堆表:

>所有行都存储在堆表中(可能是无序的).

>每行都有一个标识它的内部ROWID.

>索引是可选的.如果添加,它们包括索引列作为索引键,加上ROWID(最终访问堆中的实际行).

>注意:这个案子对这个问题没有兴趣,但是我在这里添加了它,以便与下面的第三个案例有所不同.

>纯指数表:< - 这是一个聚集索引表吗?

>有一个主索引包括键列,以及其中的非键列.所有数据都存储在索引中.

>数据遵循主索引顺序,因此按定义按主索引排序.

>不需要堆表来存储行.所有数据都已在索引中.没有任何ROWID,因为没有堆表.

>默认情况下,SQL Server表(通常)属于此类别.

> MySQL InnoDB表似乎也属于这一类,因为它们似乎根本没有堆表.

>索引排序堆表:< - 这是一个聚集索引表吗?

>有一个主要的“聚集索引”.

>有一个堆表,其中行按聚簇索引定义的顺序存储.

>堆表中的每一行都有一个ROWID.

>聚簇索引不包含非键列,而是包含用于访问堆表中实际行的ROWID.

> DB2似乎能够“集群”表.

> PostgreSQL似乎也将这些表称为“聚簇索引”表.

现在,这些#2或#3中的哪些是“聚集索引表”?谁在说实话,谁说谎? :d

换句话说,术语“聚集索引表”是一个商业术语,每个供应商可以根据他/她喜欢自由定义,还是根据某些官方数据库理论有官方唯一定义?

解决方法:

据我所知,“聚簇索引”是索引的叶节点是数据页的索引.这与非聚集索引不同,其中叶节点是对存储在数据页上的行的引用.

一个表最多只能有一个聚簇索引.在具有聚簇索引的表中,数据按索引键排序.

Postgres不支持聚簇索引.它有一个名为“cluster”的表优化,它根据索引对数据进行排序.但是,不保留此顺序,因此它与聚簇索引不同.

标签:mysql,database,sql-server,postgresql,db2

来源: https://codeday.me/bug/20190701/1347480.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值