oracle堆表和MySQL_聚簇索引对比|Oracle vs MySQL

Oracle堆组织表(heap organized table)

堆(heap)是一种得到深入研究的经典数据结构,Oracle将堆作为默认表类型(Oracle主要表类型有9种)。

“堆”是一组空间,在数据存储方面以某种随机方式被使用,数据可以存放在任何位置上。

Oracle索引组织表(index organized table/IOT)

以B*Tree结构存储,在组织数据时强制要求数据行有某种物理顺序,数据按照索引结构存储,通常根据主键有序存储在IOT中。

如:以用户ID为键将用户多个收货地址,安排到相邻物理位置上。

这样,一个用户所有收货地址都存储在一起,不会被随机安排在磁盘各个位置上。

Oracle聚簇索引

Oracle聚簇索引中聚簇是指:如果一组表有一些共同列,则将这组表存储在相同数据块中。

也就是说:聚簇是将一组表相关列上数据存储在同一块中,若一个块不能完成存储就用多个块。

如此,一组表中相关联列在物理上已经联在一起了(“预连接”),聚簇也可用于单个表。

Oracle中聚簇不是为了有序存储数据(这是IOT的工作),它是按某个键以聚簇方式存储数据。

如:在多个表关联查询中,表之间在物理上已经存在关联(“预连接”),查询效率会得到提升。

对关联查询操作很有帮助。

这是Oracle索引组织表(IOT)与聚簇索引的区别。

MySQL聚簇索引(innodb)

Mysql聚簇索引通常以主键为索引列,Mysql聚簇索引相当于Oracle中索引组织表。

Mysql聚簇索引将数据存放在B*Tree叶节点上,直接读取数据。

MySQL非聚簇索引B*Tree叶节点上,存放指向数据行指针。

MySQL聚簇索引不仅仅是一种索引类型,也是一种数据存储方式。

将相关数据安排在一起减少磁盘I/O,数据与索引都存放在B-Tree结构中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值