shrink 操作對索引的影響

楊奇龍發表於2010-06-25

論壇上有人問 shrink 表後 要不要重建索引,答案是不用。實驗如下:

SQL> conn system/yang as sysdba
已連線。
SQL> create table t tablespace test as select * from all_objects where rownum<2000;
create table t tablespace test as select * from all_objects where rownum<2000
             *
第 1 行出現錯誤:
ORA-00955: 名稱已由現有物件使用
SQL> drop table t purge;
表已刪除。

SQL> create table t tablespace test as select * from all_objects where rownum<2000;
表已建立。
SQL> create index i_objectid on t (object_id);---建立索引
索引已建立。
SQL> delete from t where object_name like '%C%';
已刪除954行。
SQL> delete from t where object_name like '%U%';
已刪除216行。
SQL> alter table t enable row movement;

--shrink操作本質上是移動行的,所以要先執行此句。
表已更改。
SQL> alter table t shrink space;
表已更改。
SQL> select index_name,status from user_indexes where index_name='I_OBJECTID';

INDEX_NAME                     STATUS                                          
------------------------------ --------                                        
I_OBJECTID                     VALID                                           


由此,證明shrink後,不用重建索引。。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-666263/,如需轉載,請註明出處,否則將追究法律責任。

相關文章