在ORACLE中,執行對錶的刪除操作不會降低該表的高水位線。而全表掃描將始終讀取一個段(extent)中所有低於高水位線標記的塊。如果在執行刪除操作後不降低高水位線標記,則將導致查詢語句的性能低下。下面的方法都可以降低高水位線標記。
1.執行表重建指令 alter table table_name move;
(在線轉移表空間ALTER TABLE 。。。 MOVE TABLESPACE 。。。
ALTER TABLE 。。。 MOVE 後面不跟參數也行,
不跟參數表還是在原來的表空間,move後記住重建索引
如果以後還要繼續向這個表增加數據,沒有必要move,
只是釋放出來的空間,只能這個表用,其他的表或者segment無法使用該空間 )
2.執行alter table table_name shrink space; 注意,此命令爲Oracle 10g新增功能,再執行該指令之前必須允許行移動 alter table table_name enable row movement;
3.複製要保留的數據到臨時表t,drop原表,然後rename臨時表t爲原表
4.emp/imp
5.alter table table_name deallocate unused
6.儘量truncate 吧