skip_unusable_indexes= true

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,那么唯一性检查还是会做的,违反唯一性的数据不会导入。

你可能感兴趣的:(skip_unusable_indexes= true)