重新编译到另外的表空间,或者删除了,然后在建立到别的空间,create index idx_name on table_name (col) tablespace index storage ( pctincrease 1 );
指定了表空间就OK了

解决方案 »

  1.   

    ALTER INDEX indexname REBUILD TABLESPACE newtablespacename;
      

  2.   

    drop index oldindex;
    create index newindex on table_name(col) tablespace index storage ( pctincrease 1 );
      

  3.   

    请问直接删除,然后在建立到别的空间,和ALTER INDEX indexname REBUILD TABLESPACE newtablespacename;两种方式有区别么?哪种好
    另外storage ( pctincrease 1 )是什么意思呢,在表空间后加和不加有什么不同
      

  4.   

    ALTER INDEX indexname REBUILD TABLESPACE newtablespacename实际上就是在指定的表空间中重新建立一个新的索引,然后再建立原来的索引,和create index newindex是一样的.
      

  5.   

    请问直接删除,然后在建立到别的空间,和ALTER INDEX indexname REBUILD TABLESPACE newtablespacename;两种方式有区别么?哪种好
    ===============================================================================
    1.直接删除,然后在别的表空间create index,创建索引时索引数据来自表数据,需要对表进行完全扫描
    2.ALTER INDEX ... REBUILD ...,首先根据原索引在别的表空间创建新的索引,如果原索引没有得到更新,创建后的新索引再去更新自身,创建完毕删除原索引;新索引数据基本来自原索引,无需从表中取得,效率比起前者要高。