oracle如何禁用索引 oracle 强制走索引

oracle 10g 是否能禁用索引?如能禁用,再如何启用已禁用的索引呢?

索引应该是不能禁用的。

目前成都创新互联已为上1000家的企业提供了网站建设、域名、虚拟主机、网站改版维护、企业网站设计、海州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

可以考虑将语法存储下来,

然后删掉索引。

如果需要恢复的时候,再创建就可以了。

如何让ORACLE索引不起作用(不可见)

OK,从上面我们可以看到索引很正常。那现在假设我们不再需要这个索引了,因此想删除它,但又不知道会不会有本文开头所说的风险。如果可以删除前先把索引不可见,确认没问题后再删除,这样就没问题了,为此,Oracle11g推出新的功能,设置索引是否可见,示例如下:

如何让ORACLE索引不起作用

你是想让某一个索引不起作用,还是全部索引不起作用,如果是全部索引,也就是说你要走全表扫描,那么用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掉呢。省的留下来烦心。

oracle 10g,可以禁用索引吗,像禁用约束一样

10g里面只有让索引UNUSABLE,语句:

ALTER INDEX idx_name UNUSABLE;

不过要再次使用的话需要rebuild,与删除了索引差不多。

11g里面可以让索引INVISIBLE,就是对优化器不可见,语句:

alter index idx_name INVISIBLE ;

再次使用也不用重建,设置为VISIBLE就行了,可惜你的版本太低。

如果是对单一sql的话,使用hint就可以,所有版本可用。


网站名称:oracle如何禁用索引 oracle 强制走索引
分享URL:http://pcwzsj.com/article/hjdjdj.html