Oracle调优--全表扫描与高水位线

本文探讨全表扫描在数据库查询中的效率问题,重点分析高水位线(HWM)的作用及其对数据块访问的影响。文章揭示了delete操作对HWM的影响及可能导致的效率低下,并提出通过truncate语句或表重建指令来优化HWM,从而提高查询性能。
摘要由CSDN通过智能技术生成

全表扫描与高水位线

决定是否使用全表扫描的要素:

  • 访问的数据块个数
  • 最终结果集行数
  • 舍弃的行数

全表扫描通常要读出直到HWM标记的所有的属于该表数据块,即使该表中没有任何数据。

HWM(高水位线):用来界定一个段中使用的块和未使用的块。在我们插入数据时,HWM逐渐上移,在HWM之下的,表示使用过的块,HWM之上的就表示未使用过的块。

delete操作不会降低HWM,关于insert语句,如果使用了append选项,HWM会直接上移,数据不会插入到表的空闲块中。

所以,一张原本有大量数据的表,用delete清除一部分数据后,用select来查询,即使现在的表中数据量并不是很多,也可能会有效率问题。

如何处理?

  • 最简单的方法:使用truncate语句,不仅清除了表数据,同时也初始化了HWM。一般大表都会做分区,truncate分区即可。
  • 复制要保留的数据到临时表,drop原表,然后rename临时表
  • emp/imp
  • 表重建指令 alter table …move
  • alter table…shrink space
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值