skip_unusable_indexes参数对不可见索引的影响

skip_unusable_indexes参数对不可见索引的影响

数据库如何处理不可用索引主要 由参数skip_unusable_indexes决定的;

如果该参数设置为true则数据库遇到不可用索引 时,只会忽略而不会提示任何错误信息;同时即使该表上带有不可用的索引或索引分区,也 可以针对该表执行DML操作,针对不可用索引对应的DML语句都将正常执行,但是数据库停止 维护相关索引.

show parameters skip_unusable_indexes;

-----数据库忽略 索引执行全表扫描

create table t2

(

sid int not null ,

sname varchar2 (10)

)

tablespace test;

--循环导入数据

declare

       maxrecords constant int:=100000;

       i int :=1;

   begin

       for i in 1..maxrecords loop

         insert into t2 values (i,'ocpyang');

       end loop;

   dbms_output.put_line(' 成功录入数据! ');

   commit;

   end;

/

create index index_t2 on t2(sid) tablespace pindex;

set autotrace on exp;

select * from t2 where sid<10;

执行计划

---------------------------------------------------- ------

Plan hash value: 48609158

--------------------------------------- -----------------------------------------

--------

| Id  | Operation                   | Name     | Rows  | Bytes | Cost (%CPU)| Ti

me     |

------- -------------------------------------------------------------------------

---- ----

|   0 | SELECT STATEMENT            |          |     9 |   180 |     3   (0)| 00

:00:01 |

|   1 |  TABLE ACCESS BY INDEX ROWID| T2       |     9 |   180 |     3   (0)| 00

:00:01 |

|*  2 |   INDEX RANGE SCAN          | INDEX_T2 |     9 |       |     2   (0)| 00

:00:01 |

-------------------------------- ------------------------------------------------

Predicate Information (identified by operation id):

------------------------------------------------ ---

  2 - access("SID"<10)

Note

-----

  - dynamic sampling used for this statement (level=2)

SQL>

set autotrace off;

alter index index_t2 unusable;

set autotrace on exp;

select * from t2 where sid<10;

执行计划

------------------ ----------------------------------------

Plan hash value: 1513984157

--- -----------------------------------------------------------------------

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

------------------------------------------------- -------------------------

|   0 | SELECT STATEMENT  |      |     4 |    80 |   103   (1)| 00:00:02 |

|*  1 |  TABLE ACCESS FULL| T2   |     4 |    80 |   103   (1)| 00:00:02 |

--------------------------------- -----------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

  1 - filter("SID"<10)

Note

-----

  - dynamic sampling used for this statement (level=2)

  - SQL plan baseline "SQL_PLAN_51mj7ynvy9stnb860bcf2" used for this statement

set autotrace off;

----- 验证skip_unusable_indexes为false的影响

show parameters skip_unusable_indexes;

alter system set skip_unusable_indexes=false;

alter index index_t2 unusable;

set autotrace on exp;

select * from t2 where sid<10;

*

时间: 2024-08-04 22:19:17

skip_unusable_indexes参数对不可见索引的影响的相关文章

使用索引的误区之四:空值对索引的影响

索引 使用索引的误区之四:空值对索引的影响我们首先做一些测试数据: SQL> create table t(x int, y int);   Table created   请注意,这里我对表t做了一个唯一(联合)索引: SQL> create unique index t_idx on t(x,y);   Index created   SQL> insert into t values(1,1);   1 row inserted   SQL> insert into t va

CDMA系统软切换参数的优化设计及对系统影响

[摘要]本文简要地介绍了CDMA系统的切换策略,重点分析了导频加入门限与导频丢弃门限等参数对系统地影响,文章最后给出了切换参数的合理设置范围,为移动运营商实现网络优化提供了一些参考. 1概述 CDMA系统支持多种类型的切换,主要类型有硬切换.软切换和更软切换.改进切换过程和调整切换参数是为了在增强CDMA功能的同时保持呼叫的完整性.硬切换是时间离散的事件,当呼叫从一个小区交换到另一个小区或者从一个载波交换到另一个载波时发生.软切换是一种状态,由多个基站同时支持一个呼叫.硬切换事件必然是短暂的:相

Sql Server之旅——第十站 看看DML操作对索引的影响

原文:Sql Server之旅--第十站 看看DML操作对索引的影响 我们都知道建索引是需要谨慎的,当只有利大于弊的时候才适合建,我们也知道建索引是需要维护成本的,这个维护也就在于DML操作了, 下面我们具体看看到底DML对索引都有哪些内幕....   一:delete操作 现在我们已经知道,索引都是以B树的形式存在的,既然是B树,我们就要看看他们的叶子节点和分支结点,先准备点测试数据,如下图: CREATE TABLE Person(ID INT,NAME CHAR(200)) CREATE

oracle中skip_unusable_indexes参数使用建议

SKIP_UNUSABLE_INDEXES的使用与索引失效是相关的,该参数10g开始引入,11g默认为TRUE. 当为TRUE时候,如果数据库中存在usable状态的索引,则会自动忽略该索引生成新的执行计划(不走该索引,也不提示该索引的异常);当为False时候,则会报错.我所运维的数据库在一些关键系统中,会将此参数设成False,让系统及时发现索引的异常以便及时去介入修复. 环境各有所异,设置值也可依据实际情况设置.如果sql使用了hint或者涉及到唯一索引的对应DML,该参数会失效. 该参数

远程数据库的表超过20个索引的影响

昨天同事参加了一个研讨会,有提到一个案例.一个通过dblink查询远端数据库,原来查询很快,但是远端数据库增加了一个索引之后,查询一下子变慢了. 经过分析,发现那个通过dblink的查询语句,查询远端数据库的时候,是走索引的,但是远端数据库添加索引之后,如果索引的个数超过20个,就会忽略第一个建立的索引,如果查询语句恰好用到了第一个建立的索引,被忽略之后,只能走Full Table Scan了. 听了这个案例,我查了一下,在oracle官方文档中,关于Managing a Distributed

浅析SQL Server 聚焦索引对非聚集索引的影响

前言 在学习SQL 2012基础教程过程中会时不时穿插其他内容来进行讲解,相信看过SQL Server 2012 T-SQL基础教程的童鞋知道前面写的所有内容并非都是摘抄书上内容,如若是这样那将没有任何意义,学习的过程必须同时也是一个思考的过程,无论是独立思考也好还是查资料也罢都是思考而非走马观花,要不然过一段时间又会健忘.简短的内容,深入的理解. 话题 非聚集索引定义:非聚集索引也是一个B树结构,与聚集索引不同的是,B树的叶子节点存的是指向堆或聚集索引的指针.你真的理解了吗??你能举出例子吗?

【Oracle】-【COMMIT对索引的影响】-从trace看COMMIT对索引的影响

之前看过老杨http://yangtingkun.itpub.net/post/468/231000的一篇文章,讲述了INSERT操作对全文索引无操作,但DELETE时为了防止删除的数据仍能通过索引的ROWID访问产生的错误,此时会进行索引的删除操作,因此大批量的DELETE-COMMIT就会耗时,甚至导致数据库挂起. 最近因为工作上的需求,有个任务涉及到数据迁移,因此一直关注COMMIT耗时的问题,就想按照老杨的方法,看看对于普通索引,上述所说的COMMIT是否有影响. 测试环境:Oracle

SQL Server-聚焦聚集索引对非聚集索引的影响(四)

前言 在学习SQL 2012基础教程过程中会时不时穿插其他内容来进行讲解,相信看过SQL Server 2012 T-SQL基础教程的童鞋知道前面写的所有内容并非都是摘抄书上内容,如若是这样那将没有任何意义,学习的过程必须同时也是一个思考的过程,无论是独立思考也好还是查资料也罢都是思考而非走马观花,要不然过一段时间又会健忘.简短的内容,深入的理解,Always to review the basics. 话题 非聚集索引定义:非聚集索引也是一个B树结构,与聚集索引不同的是,B树的叶子节点存的是指

Sql Server之旅——第十站 看看DML操作对索引的影响 

我们都知道建索引是需要谨慎的,当只有利大于弊的时候才适合建,我们也知道建索引是需要维护成本的,这个维护也就在于DML操作了, 下面我们具体看看到底DML对索引都有哪些内幕.... 一:delete操作 现在我们已经知道,索引都是以B树的形式存在的,既然是B树,我们就要看看他们的叶子节点和分支结点,先准备点测试数据,如下图: CREATE TABLE Person(ID INT,NAME CHAR(200)) CREATE INDEX idx_Name ON Person(NAME) DECLAR