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

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

|*  2 |   TABLE ACCESS FULL  | T1          |     2 |    34 |    23  (22)|
-------------------------------------------------------------------------

这样索引就隐藏起来了,如果把索引隐藏后发现有性能问题,我们可以立即打开索引:
SQL> alter index IDX_T1_TABLE_NAME visible;
 
Index altered
 
SQL> explain plan for select count(*) from t1 where table_name=T1;
 
Explained
 
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
 
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3098159
--------------------------------------------------------------------------------
| Id  | Operation         | Name              | Rows  | Bytes | Cost (%CPU)| Tim
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |                   |     1 |    17 |     1   (0)| 00:
|   1 |  SORT AGGREGATE   |                   |     1 |    17 |            |
|*  2 |   INDEX RANGE SCAN| IDX_T1_TABLE_NAME |     1 |    17 |     1   (0)| 00:
--------------------------------------------------------------------------------

 
 

      以上是Oracle11g的处理方法,但是在Oracle9i或Oracle10g中索引没有invisible的功能,我们如何处理呢?
现在Oracle数据库一般都采用基于成本的计算方法来生成执行计划,只要索引的成本更低,ORACLE就会选择使用索引,OK,那我们只要告诉ORACLE使用这个索引成本很高,它就不会使用这个索引,这样就达到了暂时让索引不可用的效果。相信很多人都知道ORACLE提供了dbms_stats包来管理对像的统计信息,通过dbms_stats.set_index_stats函数我们可以强制设置统计信息,现在我们只要把索引的成本设置成非常大即可,如下所示:

--查看IDX_T1_TABLE_NAME的基本统计信息
SQL> select a.owner,a.index_name,a.blevel,a.leaf_blocks,a.num_rows from all_indexes a where owner=YZS and index_name=IDX_T1_TABLE_NAME;
 
OWNER                          INDEX_NAME                         BLEVEL LEAF_BLOCKS   NUM_ROWS
------------------------------ ------------------------------ ---------- ----------- ----------

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

推荐热点

  • 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