如何让ORACLE索引不可见(3)

来源:未知 责任编辑:责任编辑 发表时间:2014-03-23 22:32 点击:

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

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Table函数使用简介
  • Oracle数据库Constraint约束的常用操作及异常处理
  • Bulk Collect性能分析(zz)
  • export/import的使用
  • OCP043第十五讲 Database Security
  • ORACLE10gr2数据导入MySQL方案
  • oracle 让sys用户可以使用isqlplus
  • 在oracle数据库下使用iSQL*Plus DBA访问数据库
  • Oracle行列转换小结
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1