新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
索引应该是不能禁用的。
目前成都创新互联已为上1000家的企业提供了网站建设、域名、虚拟主机、网站改版维护、企业网站设计、海州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
可以考虑将语法存储下来,
然后删掉索引。
如果需要恢复的时候,再创建就可以了。
OK,从上面我们可以看到索引很正常。那现在假设我们不再需要这个索引了,因此想删除它,但又不知道会不会有本文开头所说的风险。如果可以删除前先把索引不可见,确认没问题后再删除,这样就没问题了,为此,Oracle11g推出新的功能,设置索引是否可见,示例如下:
你是想让某一个索引不起作用,还是全部索引不起作用,如果是全部索引,也就是说你要走全表扫描,那么用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掉呢。省的留下来烦心。
10g里面只有让索引UNUSABLE,语句:
ALTER INDEX idx_name UNUSABLE;
不过要再次使用的话需要rebuild,与删除了索引差不多。
11g里面可以让索引INVISIBLE,就是对优化器不可见,语句:
alter index idx_name INVISIBLE ;
再次使用也不用重建,设置为VISIBLE就行了,可惜你的版本太低。
如果是对单一sql的话,使用hint就可以,所有版本可用。