问题描述:
项目反馈某功能响应时间很长,高峰期时系统整体响应很慢。。。
获取相应的AWR,问题确实比较严重,latch: cache buffers chains等待,因为这些会话SQL执行时间太长,并发情况下数据库连接数迅速增长,从应用服务器的性能计数器上确实可以看到数据库连接激增的情况。
原因分析:
Oracle使用WHERE C1='' OR C2 IN(SubQuery)的方式会造成索引失效问题,以下是测试示例:
create table tkk22
as
select * from user_tables t; alter table tkk22 add constraint pk_tkk22 primary key(table_name);
create index idx_tkk22_rows on tkk22(num_rows); analyze table tkk22 compute statistics; -- 全表扫描
select *
from tkk22 t
where t.num_rows = 37 or t.num_rows in (select 10 from dual); -- 局部索引查找
select *
from tkk22 t
where t.num_rows = 37 or t.num_rows in (10); -- OR
select * from tkk22 t where t.num_rows = 37
union
select * from tkk22 t where t.num_rows in (select 10 from dual);
解决方案:
1、将子查询的结果先取出,然后再静态编入到IN()条件;
2、把两个条件的OR,改为UNION
select *
from tkk22 t
where t.num_rows = 37 or t.num_rows in (10); -- OR
select * from tkk22 t where t.num_rows = 37
union
select * from tkk22 t where t.num_rows in (select 10 from dual);
Oracle索引失效问题:WHERE C1='' OR C2 IN(SubQuery),并发请求时出现大量latch: cache buffers chains等待的更多相关文章
-
oracle 索引失效原因及解决方法
oracle 索引失效原因及解决方法 2010年11月26日 星期五 17:10 一.以下的方法会引起索引失效 1,<>2,单独的>,<,(有时会用到,有时不会)3,like ...
-
oracle 索引失效原因
转自 http://www.cnblogs.com/orientsun/archive/2012/07/05/2577351.html Oracle 索引的目标是避免全表扫描,提高查询效率,但有些时 ...
-
能使 Oracle 索引失效的六大限制条件【转】
. 引用自: http://www.cnblogs.com/orientsun/archive/2012/07/05/2577351.html 总结得非常到位 Oracle 索引的目标是避免全表扫描 ...
-
Oracle索引失效原因及解决方法
一.Oracle索引失效的原因 1使用否定关键字 !=, <> ,not in,not exist select * fromdrama where id <> 1,Mysql ...
-
分享知识-快乐自己:能使 Oracle 索引失效的六大限制条件
Oracle 索引的目标是避免全表扫描,提高查询效率,但有些时候却适得其反. 例如一张表中有上百万条数据,对某个字段加了索引,但是查询时性能并没有什么提高,这可能是 oracle 索引失效造成的.or ...
-
能使Oracle索引失效的七大限制条件
Oracle 索引的目标是避免全表扫描,提高查询效率,但有些时候却适得其反. 例如一张表中有上百万条数据,对某个字段加了索引,但是查询时性能并没有什么提高,这可能是 oracle 索引失效造成的.or ...
-
【转】Oracle索引失效问题
转自:http://www.cnblogs.com/millen/archive/2010/01/18/1650423.html 失效情况分析: <> 单独的>,<,(有时会用 ...
-
ORACLE索引失效原因归纳[转]
1.隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误. 由于表的字段tu_mdn定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给Orac ...
-
oracle 索引失效的情况分析
见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp54 1) 没有查询条件,或者查询条件没有建立索引 2) 在查询条件上 ...
随机推荐
-
【C#进阶系列】22 CLR寄宿和AppDomain
关于寄宿和AppDomain 微软开发CLR时,将它实现成包含在一个DLL中的COM服务器. 任何Windows应用程序都能寄宿(容纳)CLR.(简单来讲,就是CLR在一个DLL中,通过引用这个DLL ...
-
elipse 从eclipse导入maven项目
1. 使用Eclipse通过Svn导入项目 2.cmd 在项目目录下执行 mvn eclipse:eclipse 3. 然后在项目上点击右键 configure ->convert to mav ...
-
mysql中常用的控制流函数
MySQL有4个函数是用来进行条件操作的,这些函数可以实现SQL的条件逻辑,允许开发者将一些应用程序业务逻辑转换到数据库后台. MySQL控制流函数: CASE WHEN[test1] THEN [r ...
-
Teamwork[HDU4494]
Teamwork Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submi ...
-
Palindrome Permutation II 解答
Question Given a string s, return all the palindromic permutations (without duplicates) of it. Retur ...
-
跟我一起学python(2)
学习总结: 1.数据类型 a.数据:表示一种状态 b.python不存在字符类型 c.可变与不可变 d.x = 10 既 x = int(10) 2.字符编码 3.文件处理 详细: 数据类型: is ...
-
python全栈开发day31-操作系统介绍,异步、同步、阻塞、非阻塞,进程
一.网络编程内容回顾 1.arp协议 #交换机 #广播.单播 2.ip协议 3.tcp和udp协议 tcp:可靠的,面向连接的,字节流传输,长连接 三次握手:一方发送请求,另一方确认请求同时发送请求, ...
-
cin.tie与sync_with_stdio加速输入输出
在LeetCode上练习习题的时候每次AC之后都会去看别人的代码,几乎每次都能遇到cin.tie与sync_with_stdio.类似这样: static auto x = [](){ std::io ...
-
浅谈JSONP (vue-jsonp组件 XXXtoken:报错处理)
由于同源策略的存在,特别是前后端两个项目存在的情况下,客户端访问服务端必然存在跨域的情况,而使用jsonp,则不存在这个问题. 主要是因为jsonp是在页面中插入一段js代码,而请求返回的也是一段js ...
-
Resetting the Root Password Using rd.break for RHEL7
Start the system and, on the GRUB 2 boot screen, press the e key for edit. Remove the rhgb and quiet ...