设为首页 加入收藏

TOP

如何让ORACLE索引不可见(二)
2014-11-24 00:04:40 来源: 作者: 【 】 浏览:6
Tags:如何 ORACLE 索引 可见
ER INDEX_NAME BLEVEL LEAF_BLOCKS NUM_ROWS
------------------------------ ------------------------------ ---------- ----------- ----------
YZS IDX_T1_TABLE_NAME 1 12 2710

--设置非常离谱的统计信息,让ORACLE认为使用索引的成本很高
SQL> exec dbms_stats.set_index_stats(ownname => YZS,indname => IDX_T1_TABLE_NAME,indlevel => 10,numlblks => 1000000000,numrows => 100000000000,no_invalidate => false );

PL/SQL procedure successfully completed

备注:indlevel值不能设置太高,有些版本的ORACLE有BUG,会导致SQL解析发生错误。numlblks的值也不用太大,因为ORACLE统计信息里索引的块数最高也只能是4294967295。 no_invalidate=false表示让CACHE中的执行计划立即失效,重新按现在的统计信息生成SQL执行计划。

--验证一下是否生效
SQL> explain plan for select count(*) from t1 where table_name=DUAL;

Explained

SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3724264953
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time &nbs

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle创建索引策略 下一篇在Oracle中列出指定数据表的全部..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: