大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
10g里面只有让索引UNUSABLE,语句:
成都创新互联是一家专业提供固原企业网站建设,专注与成都网站建设、网站设计、H5开发、小程序制作等业务。10年已为固原众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
ALTER INDEX idx_name UNUSABLE;
不过要再次使用的话需要rebuild,与删除了索引差不多。
11g里面可以让索引INVISIBLE,就是对优化器不可见,语句:
alter index idx_name INVISIBLE ;
再次使用也不用重建,设置为VISIBLE就行了,可惜你的版本太低。
如果是对单一sql的话,使用hint就可以,所有版本可用。
索引应该是不能禁用的。
可以考虑将语法存储下来,
然后删掉索引。
如果需要恢复的时候,再创建就可以了。
你是想让某一个索引不起作用,还是全部索引不起作用,如果是全部索引,也就是说你要走全表扫描,那么用hint就行,如果让某一个索引不起作用,用另外一个索引,那么也可以用hint指定。
比如:
不走任何索引(全表扫描):
SELECT /*+ FULL(A) */ EMP_NO,EMP_NAM FROM BSEMPMS A WHERE EMP_NO='SCOTT'
不走某一个索引:
将上文的/*+ FULL(A) */换为/*+ NO_INDEX(TABLE INDEX1, index2) */
走某一个索引
将上文的/*+ FULL(A) */换为/*+ INDEX(TABLE INDEX1, index2) */
hint还有很多用法,你可以慢慢查。
如果索引是在没用那么就drop掉。让他永远无效,我觉得还不如drop掉呢。省的留下来烦心。
OK,从上面我们可以看到索引很正常。那现在假设我们不再需要这个索引了,因此想删除它,但又不知道会不会有本文开头所说的风险。如果可以删除前先把索引不可见,确认没问题后再删除,这样就没问题了,为此,Oracle11g推出新的功能,设置索引是否可见,示例如下: