暂无图片
Oracle全表扫描是怎样扫描数据的?
我来答
分享
同同
2023-06-10
Oracle全表扫描是怎样扫描数据的?

Oracle全表扫描是怎样扫描数据的?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新

从Oracle的逻辑存储结构中,块(block)是最小的存储单位,物理上连续的块组成区(extent),区又组成了段(segment)。对于非分区表如果表中没有clob/blob字段,那么一个表就是一个段。全表扫描,其实就是扫描表中格式化过的区。因为里面的数据块在物理上是连续的,所以全表扫描可以多块读。全表扫描不能跨区扫描,因为区与区之间的块,物理上不一定是连续的。对于分区表,如果表中没有clob/blob字段,一个分区就是一个段,分区表扫描方式与非分区表扫描方式是一样的。

对一个非分区表进行并行扫描,其实就是同时扫描表中多个不同区,因为区与区之间的块物理上不连续,所以不需要担心扫描到相同的数据块。

暂无图片 评论
暂无图片 有用 9
打赏 0
暂无图片
杜伟

全表扫描是oracle访问表的一种方式,会从该表所占用的第一个区的第一个块开始扫描,一直扫描到该表高水位线,在做全表扫描时会使用多块读(db_file_multiblock_read_count),但是不能跨区多块读取,如果有行迁移也会产生多一次的IO,当表小时,全表扫的效率还是比较高的,但是,全表扫性能会随着表数据量递增而递减的,所以此时会考虑使用索引进行TABLE ACCESS BY INDEX ROWID 的方式来优化查询。

暂无图片 评论
暂无图片 有用 1
打赏 0
回答交流
Markdown


请输入正文
提交