不可视索引
来源:互联网 发布:硕放菜鸟网络招聘 编辑:程序博客网 时间:2024/05/17 01:16
上山容易,下山难,数据库索引也是这样,建时容易,删时难
在项目中,索引基本上是这么产生的
1,建主键送索引
2,感觉sql慢,来个索引先
3,查询条件变了,再来个索引
4,查询条件变多了,来个组合索引
5,查询条件要经过计算,来个函数索引
6,性别之类的列来个位图索引
7,见不得TABLE ACCESS FULL,想法设法加个索引
8,不想回表
如果是自己团队开发的应用,大家沟通一下,该删的删,该调整的调整,基本上不会有太大问题,如果是第三方原装未开封的产品,无法修改代码,调整索引的影响谁都不知道,调整后可能没事,也可能关键页面打不开,但是也不能不调整,索引的性能先不说,至少对数据插入的影响是可见的,这种场景下,不可视索引可以作为索引调整的手段。
如果将现有索引设置成不可视,针对该表的查询将不会使用该索引,不可视索引的维护依然是正常的,可以保证随时启用
示例
索引设置成不可视
SQL> alter index idx_test_name invisible;Index altered.使用索引列查询该表
SQL> select * from test where object_name='TEST';Elapsed: 00:00:00.04Execution Plan----------------------------------------------------------Plan hash value: 1357081020--------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |--------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 12 | 2484 | 308 (1)| 00:00:04 ||* 1 | TABLE ACCESS FULL| TEST | 12 | 2484 | 308 (1)| 00:00:04 |--------------------------------------------------------------------------Predicate Information (identified by operation id):--------------------------------------------------- 1 - filter("OBJECT_NAME"='TEST')Note----- - dynamic sampling used for this statement (level=2)Statistics----------------------------------------------------------200 recursive calls 0 db block gets 1172 consistent gets 0 physical reads 0 redo size 1611 bytes sent via SQL*Net to client523 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 6 sorts (memory) 0 sorts (disk) 1 rows processed将索引启用,再次执行查询语句
SQL> alter index idx_test_name visible;Index altered.Elapsed: 00:00:00.04SQL> select * from test where object_name='TEST';Elapsed: 00:00:00.02Execution Plan----------------------------------------------------------Plan hash value: 3700989122---------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |---------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 |207 | 4 (0)| 00:00:01 || 1 | TABLE ACCESS BY INDEX ROWID| TEST | 1 |207 | 4 (0)| 00:00:01 ||* 2 | INDEX RANGE SCAN | IDX_TEST_NAME | 1 | | 3 (0)| 00:00:01 |---------------------------------------------------------------------------------------------Predicate Information (identified by operation id):--------------------------------------------------- 2 - access("OBJECT_NAME"='TEST')Note----- - dynamic sampling used for this statement (level=2)Statistics----------------------------------------------------------204 recursive calls 0 db block gets 92 consistent gets 0 physical reads 0 redo size 1614 bytes sent via SQL*Net to client523 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 6 sorts (memory) 0 sorts (disk) 1 rows processed
索引设置成不可视后,如果应用出现问题,可以立即启用索引,因为不可视索引是正常维护的,所以启用非常快,如果按照常规的删除索引,然后重建,在业务高峰期的时候,重建索引的后果大家都懂。
0 0
- 索引的不可视
- 不可视索引
- 获取RecyclerView的可视条目索引
- VB 隐藏窗口截图/不可视区域载图
- 不可视的OpenCL和APU芯片驱动加速
- 不可视对象的自动实例化BUG
- 2015.6.24 XJOI T1.不可视境界线
- js获取各种浏览器窗口可视部分大小(可视部分不包含工具栏、标签栏等)
- 索引什么时候不工作
- 不可用索引
- 索引什么时候不工作
- oracle 不可见索引
- 不可见索引
- 不走索引原因
- Oracle 不走索引
- 不可见索引
- 验证索引列NULL不走索引
- 不可见索引和虚拟索引。
- pyqt4 QDial QSpinBox
- 日期时间格式化
- 浅谈算法和数据结构: 二 基本排序算法
- 局域网时间同步NTP服务架设
- 网络编程--UDP下的Socket
- 不可视索引
- UGUI DOTeen插件
- Android 应用的真正入口 - ZygoteInit.java
- mysql索引总结
- ViewGroup是如何加载布局中的view?
- 通过sqlcmd执行多数据(sqlserver)
- android 用代码打开 gprs(流量开关) android 5.0 ROOT
- 归并排序(自上向下)
- 创新~也许雷同!