Oracle索引失效问题
Oracle 索引不起作用的几种情况:
1,<>
2,单独的>,<,(有时会用到,有时不会)
3,like "%_" 百分号在前.(可采用在建立索引时用reverse(columnName)这种方法处理)
4,表没分析.
5,单独引用复合索引里非第一位置的索引列.
6,字符型字段为数字时在where条件里不添加引号.
7,对索引列进行运算.需要建立函数索引.
8,not in ,not exist.
9,当变量采用的是times变量,而表的字段采用的是date变量时.或相反情况。
10, 索引失效。
11,基于cost成本分析(oracle因为走全表成本会更小):查询小表,或者返回值大概在10%以上
12,有时都考虑到了 但就是不走索引,drop了从建试试在
13,B-tree索引 is null不会走,is not null会走,位图索引 is null,is not null 都会走
14,联合索引 is not null 只要在建立的索引列(不分先后)都会走,
in null时 必须要和建立索引第一列一起使用,当建立索引第一位置条件是is null 时,其他建立索引的列可以是is null(但必须在所有列都满足is null的时候),或者=一个值;
当建立索引的第一位置是=一个值时,其他索引列可以是任何情况(包括is null =一个值),以上两种情况索引都会走。其他情况不会走。
针对情况10的处理:
1)导致的原因:
在SQL*LOADER 加载过程中会维护索引,由于数据量比较大,在SQL*LOADER 加载过程中出现异常情况,导致ORACLE 来不及维护索引,导致索引处于失效状态,影响查询和加载。
异常情况主要有:在加载过程中杀掉SQL*LOADER 进程,重启,表空间不够等。
select * from user_indexes;
2)解决方法:
重建索引
3)如何重建索引
a) 查看索引类型
select t1.index_name,t1.partitioned from Dba_Indexes t1where t1.Table_Name=upper('CCB_COGNOS_PROD_BALANCE_AA')
显示:
- 索引名称 是否分区索引
- GNOS_PROD_BALANCE_AA_N1 NO
索引名称 是否分区索引CCB_COGNOS_PROD_BALANCE_AA_N1 NO
b)非分区索引
重建索引:alter index cin.CCB_COGNOS_PROD_BALANCE_AA_N1 rebuild online Nologging
c)分区索引
找出失效的分区索引:
select t.Index_Name, t.Partition_Name, t.Tablespace_Name, t.Statusfrom Dba_Ind_Partitions twhere t.Index_Name = 'CMZ_LOCAL_IDX_2'
重建所有状态为unusable的索引
重建脚本:
- ALTER INDEX 索引名
- REBUILD PARTITION 分区名
- TABLESPACE 表空间名
- ONLINE NOLOGGING
转载于:https://www.cnblogs.com/millen/archive/2010/01/18/1650423.html
Oracle索引失效问题相关推荐
- 能使Oracle索引失效的六大限制条件
例如一张表中有上百万条数据,对某个字段加了索引,但是查询时性能并没有什么提高,这可能是 oracle 索引失效造成的.oracle 索引有一些限制条件,如果你违反了这些索引限制条件,那么即使你已经加了 ...
- Oracle 索引失效的六大限制条件
Oracle 索引失效的六大限制条件 [原创]能使 Oracle 索引失效的六大限制条件 Oracle 索引的目标是避免全表扫描,提高查询效率,但有些时候却适得其反. 例如一张表中有上百万条数据,对某 ...
- oracle 检查索引失效,oracle 索引失效原因_汇总
1) 没有查询条件,或者查询条件没有建立索引 2) 在查询条件上没有使用引导列 3) 查询的数量是大表的大部分,应该是30%以上. 4) 索引本身失效 5) 查询条件使用函数在索引列上,或者对索引列进 ...
- 索引忽然失效Oracle,Oracle索引失效原因及解决方法
一.Oracle索引失效的原因 1使用否定关键字 !=, <> ,not in,not exist select * fromdrama where id <> 1,Mysql ...
- oracle对sga统计信息不对,oracle 索引失效原因及解决方法
一.以下的方法会引起索引失效 1,<> 2,单独的>, 3,like "%_" 百分号在前. 4,表没分析. 5,单独引用复合索引里非第一位置的索引列. 6,字 ...
- ORACLE 索引失效的原因与解决
一.以下的方法会引起索引失效1,<> 2,单独的>,<,(有时会用到,有时不会) 3,like "%_" 百分号在前. 4,表没分析. 5,单独引用复合索 ...
- oracle 索引-1无效,oracle 索引失效原因及解決方法
一.以下的方法會引起索引失效 1,<> 2,單獨的>, 3,like "%_" 百分號在前. 4,表沒分析. 5,單獨引用復合索引里非第一位置的索引列. 6,字 ...
- ORACLE索引失效,更新统计信息
有时候建立索引的时候不走索引,排除了字段数据问题和sql写法问题,索引失效的问题之外,还得考虑是统计信息过旧,得重新收集.查看表的统计信息,看 user_index 的last_analyze(索引) ...
- oracle字符索引丢失,Timestamp导致Oracle索引失效
问题的起因是DBA通知说在一套之前上线的系统中,对日期创建索引无法生效,导致大量的日期查询效率无法通过创建索引得到提升.通过分析得出如下的结论: 在JDBC中一般通过prepareStatement的 ...
最新文章
- print、println的区别
- 在Spring Boot中实现通用Auth认证的几种方式
- 笔试训练1 知识点整理
- HTML DOCTYPE 标签 -- DTDs 文档类型声明
- div 包裹_如何查看到达之前收到的包裹和邮件
- leetcode解题记录(二)
- 整理 45 道 CSS 基础面试题(附答案)
- 《Ext JS权威指南》节选:树的动态加载及节点维护
- Idea:新版本Idea底部工具栏Git中没有Local Changes
- html开始游戏如何打开,dnf游戏进不去 点击开始-运行,输入CMD
- PID参数整定具体方法-圆周倒立摆
- 亮道剧学铭:激光雷达系统量产上车没那么容易
- U盘引导网络安装CentOS 7
- 四年级计算机考试反思,四年级期中考试反思
- idear配置工具上传Jar包到服务器并运行
- SOLIDWORKS 2014官方正版功能介绍
- 17 | 分布式安全:上百个分布式节点,不会出现“内奸”吗?
- 计算机ei期刊最新版2018,2018年EI收录中文期刊目录
- Android App软件框架搭建
- python安装百度aip_Python人工智能-基于百度AI接口