什么时候需要重建索引
1、 删除的空间没有重用,导致 索引出现碎片
2、 删除大量的表数据后,空间没有重用,导致 索引”虚高”
3、索引的 clustering_facto 和表不一致
也有人认为当索引树高度超过4的时候需要进行重建,但是如果表数量级较大,自然就不会有较高的树,而且重建不会改变索引树高度,除非是由于大量引起的索引树“虚高”,重建才会改善性能,当然这又回到了索引碎片的问题上了。
SQL> INSERT INTO T1 SELECT * FROM T11;
30100005 rows created.
SQL> CREATE index t1_index on T1 (id);
SQL> SELECT t.owner, t.segment_name,SUM(bytes)/1024/1024 From dba_segments t
WHERE t.tablespace_name = 'SYSTEM' and segment_name ='T1_INDEX'
GROUP BY t.owner,t.segment_name
ORDER BY SUM(bytes) desc;
delete table后
SQL> DELETE FROM T1;
30100005 rows deleted.
查看索引大小,发现未变化。
使用alter index rebuild online命令重建索引
SQL> alter index T1_INDEX rebuild online;
Index altered.
版权声明:本文为博主原创文章,未经博主允许不得转载。
oracle
- 上一篇:分区表impdp导入ORA-39083
- 下一篇:Oracle解决索引碎片功能