1.alter session set skip_unusable_indexes = true;
修改后,插入数据并不会维护索引,而执行查询的时候cbo也不会使用该索引,
如果skip_unusable_indexes = false;
或者true的时候使用hint来走索引或者插入批量数据的时候会报ora-01502,索引无效。
这样,在不同的业务场景就要考虑不同的情况了,如果是向目前正在运行的生产环境灌数据,为了不影响业余,不建议采用禁索引的方式来处理。如果是其他情况也可以直接drop掉索引了重建,不过不drop,而采用rebuild 或者rebiuld online也是可以的。
2.imp/exp导入导出时使用
同理,在imp时设置了参数skip_unusable_indexes=y,且目标表的索引状态是unusable,则导入数据的时候,新插入的数据并不会维护索引
(注意,unusable状态的索引,在truncate表后,状态会变为valid)
先 truncate
alter index ..unusable
imp ..skip_unusable_indexes=y
alter index ..rebuild
另外,如果索引是唯一索引或者有pk,那么唯一性检查还是会做的,违反唯一性的数据不会导入。