如何让ORACLE索引不可见(3)
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
相关新闻>>
- 发表评论
-
- 最新评论 更多>>