Oracle 索引失效的六大限制条件
Oracle 索引失效的六大限制条件
【原创】能使 Oracle 索引失效的六大限制条件
Oracle 索引的目标是避免全表扫描,提高查询效率,但有些时候却适得其反。
例如一张表中有上百万条数据,对某个字段加了索引,但是查询时性能并没有什么提高,这可能是 oracle 索引失效造成的。oracle 索引有一些限制条件,如果你违反了这些索引限制条件,那么即使你已经加了索引,oracle还是会执行一次全表扫描,查询的性能不会比不加索引有所提高,反而可能由于数据库维护索引的系统开销造成性能更差。 下面就是总结的能使 Oracle 索引失效的七大限制条件。
1. 没有 WHERE 子句
2. 使用 IS NULL 和 IS NOT NULL
SELECT ... FROM emp WHERE comm IS NULL; comm 列的索引会失效
3. WHERE 子句中使用函数
如果没有使用基于函数的索引,那么 where 子句中对存在索引的列使用函数时,会使优化器忽略掉这些索引。例如:
select * from staff where trunc(birthdate) = '01-MAY-82';
但是把函数应用在条件上,索引是可以生效的,把上面的语句改成下面的语句,就可以通过索引进行查找。
select * from staff where birthdate < (to_date('01-MAY-82') + 0.9999);
注意:对于 MIN, MAX 函数,Oracle 仍然使用索引。
4. 使用 LIKE ‘%T’ 进行模糊查询
5. WHERE 子句中使用不等于操作
不等于操作包括:<>, !=, NOT colum >= ?, NOT colum <= ?
对于这个限制条件可以通过 OR 替代,例如: colum <> 0 ===> colum>0 OR colum<0
6. 等于和范围索引不会被合并使用
SELECT emp_id, emp_m, salary_q ... FROM emp WHERE job='manager' AND deptno>10
job 和 deptno 都是非唯一索引,这种条件下 oracle 不会合并索引,它只会使用第一个索引。
7. 比较不匹配数据类型
dept_id是一个varchar2型的字段,在这个字段上有索引,但是下面的语句会执行全表扫描。
select * from dept where dept_id = 900198;
这是因为 oracle 会自动把 where 子句转换成 to_number(dept_id)=900198,相当于使用函数,这样就限制了索引的使用。正确写法如下:
select * from dept where dept_id = '900198';
转载于:https://www.cnblogs.com/obamam/p/7478456.html
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索引失效问题
Oracle 索引不起作用的几种情况: 1,<> 2,单独的>,<,(有时会用到,有时不会) 3,like "%_" 百分号在前.(可采用在建立索引时用re ...
- 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的 ...
最新文章
- 针对测试行业,新人的一些建议:我适合做测试吗?
- Windows PE 第十章 加载配置信息
- 2016/3/10 PHP (超文本预处理器) 是什么?
- Python 技术篇-使用opencv读取图片实例演示,python安装opencv库
- Linux 内核开发资料
- 【控制】《多无人机协同控制技术》周伟老师-第1章-无人机协同控制技术概述
- K-means Algorithm 聚类算法
- MySQL用户管理和权限管理
- left join 和inner join关联查询区别
- 通过BitmapFactory.Options解决activity之间传递图片出现内存溢出(OOM)问题
- 网抑云了是什么意思,网抑云语录有哪些,网抑云网抑云梗表情包
- python学习笔记(十一)-python程序目录工程化
- 素数判定 [2009年哈尔滨工业大学计算机研究生机试真题]
- 潜意识的力量:潜意识开发四大关键
- tomcat端口被占用的解决方式
- 【Python量化】 Scipy库求解最优资产投资组合
- 多个安卓设备投屏到电脑_安卓手机怎么投屏到电脑上?这样做,在电脑上就能操控手机...
- 两个路由器如何通过一根网线组建局域网(非wifi桥接方式)
- Win XP iis组件补丁(ghost xp)iis5.1
- 您该怎样科学地准备过年?
热门文章
- 一文带你了解目前的“光伏母亲公路” 能照明充电和融雪
- Oracle官方并发教程之不可变对象
- DNS配置,主从,子域,转发
- 细数被程序员吐糟的9大困难(转)
- Python源代码文件的文本编码
- 蓝桥杯 ALGO-141 算法训练 P1102
- c#与马扎克通讯_马扎克伺服报警
- cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration的解决
- python数组写入txt
- java 去除jsonarray里面jsonarray的重复和合并数据