首页 >

Oracle 索引的可见与隐藏(visible/invisible)

数据库|mysql教程Oracle 索引的可见与隐藏(visible/invisible)
Oracle索引,Oracle 索引的可见与隐藏(visib
数据库-mysql教程
java运输管理系统源码,web vscode教程,微星ubuntu没有网络,tomcat6.0.13,sqlite blob读取,jquery 翻页插件,前端框架磁力积木推荐,爬虫抓去图片,验证码php,SEO文案高质量,信息技术教学网站源码,如何制作网页下拉菜单,周末设计橙色discuz模板,emlog不同页面的,校园功能管理系统源码,开源小程序系统lzw
一个不可见的索引在优化器中被忽视,除非你主动地在会话或系统级别中设置OPTIMIZER_USE_INVISIBLE_INDEXES初始化参数为TRUE。标记
电影资源网站源码java,vscode 安装英文版,暗夜精灵 ubuntu,tomcat设置网站图标,csgo市场爬虫,ecshop php文件,重庆seo优化技术指导,手机网站悬浮客服代码,手机版资讯详情模板lzw
英文站源码,ubuntu账户被锁定,python 爬虫qq音乐,php ehco,潍坊搜狗seolzw

官方文档:Making an Index Invisible

An invisible index is ignored by the optimizer unless you explicitly set the OPTIMIZER_USE_INVISIBLE_INDEXES initialization parameter to TRUE at the session or system level. Making an index invisible is an alternative to making it unusable or dropping it. You cannot make an individual index partition invisible. Attempting to do so produces an error.

解释:一个不可见的索引在优化器中被忽视,除非你主动地在会话或系统级别中设置OPTIMIZER_USE_INVISIBLE_INDEXES初始化参数为TRUE。标记不可见索引可以替代不可用索引或删除索引。你不能让分区索引不可见。试图这么做会产生一个错误。

测试:

1. 创建测试表ti,根据dba_objects表。

scott@ORCL>create table ti as select * from dba_objects;

Table created.

scott@ORCL>select count(*) from ti;

COUNT(*)

———-

72799

2. 根据object_id列创建索引ind_ti

scott@ORCL>create index ind_ti on ti(object_id);

Index created.

3. 调整为查看执行计划

scott@ORCL>set autot trace exp

4. 测试索引是否生效被使用,结果索引被正常应用

scott@ORCL>select * from ti where object_id=20;

Execution Plan

———————————————————-

Plan hash value: 1655810896

————————————————————————————–

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

————————————————————————————–

| 0 | SELECT STATEMENT | | 1 | 207 | 2 (0)| 00:00:01 |

| 1 | TABLE ACCESS BY INDEX ROWID| TI | 1 | 207 | 2 (0)| 00:00:01 |

|* 2 | INDEX RANGE SCAN | IND_TI | 1 | | 1 (0)| 00:00:01 |

————————————————————————————–

Predicate Information (identified by operation id):

—————————————————

2 – access(“OBJECT_ID”=20)

Note

—–

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

5. 将ind_ti索引改为不可见

scott@ORCL>alter index ind_ti invisible;

6. 再次测试时,索引没有被使用

scott@ORCL>select * from ti where object_id=20;

Execution Plan

———————————————————-

Plan hash value: 798420002

————————————————————————–

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

————————————————————————–

| 0 | SELECT STATEMENT | | 12 | 2484 | 291 (1)| 00:00:04 |

|* 1 | TABLE ACCESS FULL| TI | 12 | 2484 | 291 (1)| 00:00:04 |

————————————————————————–

Predicate Information (identified by operation id):

—————————————————

1 – filter(“OBJECT_ID”=20)

Note

—–

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

7. 数据修改

scott@ORCL>insert into ti select * from ti;

72799 rows created.

scott@ORCL>insert into ti select * from ti;

145598 rows created.

scott@ORCL>select count(*) from ti;

COUNT(*)

———-

291196

8. 将索引改为可见状态

scott@ORCL>alter index ind_ti visible;

Index altered.

9. 测试索引是否生效被使用,,结果索引被正常应用

scott@ORCL>set autot trace exp

scott@ORCL>select * from ti where object_id=20;

Execution Plan

———————————————————-

Plan hash value: 1655810896

————————————————————————————–

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

————————————————————————————–

| 0 | SELECT STATEMENT | | 4 | 828 | 2 (0)| 00:00:01 |

| 1 | TABLE ACCESS BY INDEX ROWID| TI | 4 | 828 | 2 (0)| 00:00:01 |

|* 2 | INDEX RANGE SCAN | IND_TI | 4 | | 1 (0)| 00:00:01 |

————————————————————————————–

Predicate Information (identified by operation id):

—————————————————

2 – access(“OBJECT_ID”=20)

Note

—–

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


Oracle 索引的可见与隐藏(visible/invisible)
  • 由Oracle索引来理解ArcSDE索引
  • 由Oracle索引来理解ArcSDE索引 | 由Oracle索引来理解ArcSDE索引 ...

    Oracle 索引的可见与隐藏(visible/invisible)
  • Oracle 索引index那些事
  • Oracle 索引index那些事 | Oracle 索引index那些事 ...

    Oracle 索引的可见与隐藏(visible/invisible)
  • Oracle 索引与表分析几种方法
  • Oracle 索引与表分析几种方法 | Oracle 索引与表分析几种方法 ...