加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle优化:避免全表扫描

发布时间:2020-12-12 13:29:33 所属栏目:百科 来源:网络整理
导读:oracle优化:避免全表扫描 http://www.cnblogs.com/oraclelike/p/6146436.html 如果我们查询了一条SQL语句,这条SQL语句进行了全表扫描,那到底是扫描了多少个数据块呢?是表有多少数据,就扫描多少块吗?不是的。而是扫描高水位线一下的所有块。有的时候有

oracle优化:避免全表扫描

http://www.cnblogs.com/oraclelike/p/6146436.html

如果我们查询了一条SQL语句,这条SQL语句进行了全表扫描,那到底是扫描了多少个数据块呢?是表有多少数据,就扫描多少块吗?不是的。而是扫描高水位线一下的所有块。有的时候有人经常说,我的表也不大呀,怎么查询了这么久,其实奥秘就是高水位线了。

在数据库表刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当插入了数据以后,高水位线就会上涨,但是这里也有一个特性,就是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。也就是说,这条高水位线在日常的增删操作中只会上涨,不会下跌。HWM通常增长的幅度为一次5个数据块.

 这也就产生一种我们经常遇到的情况,产生大量碎片。如何消除碎片呢?有move和shrink两种方法。1.如果你只是收缩空间,数据增长很慢,那用shrink可以但是如果数据增长很快的话,用move就比较合适。2.move从segment的底部开始,move这些rows到segment的头部。Shrink则是delete/insert相结合,这样会产生非常多的UNDO和REDO。(move和shrink之后,索引会失效,需要重建索引)推荐使用move。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读