oracle突然查询很慢,例如:select *from tab1 where flag=3 很慢!但是select *from tab1 where flag=2 这个查询条件就很快!
注:flag=2 该值是“已完成”的意思;flag=3 该值是“正在执行”的意思。当flag=3的时候,后台有接口执行,执行完了就会变成2两个不同的值,查询速度却一快一慢求解~
注:flag=2 该值是“已完成”的意思;flag=3 该值是“正在执行”的意思。当flag=3的时候,后台有接口执行,执行完了就会变成2两个不同的值,查询速度却一快一慢求解~
会不会是其它模块也一起执行,也访问了相同表产生了资源锁竞争等待?
具体原因还是要采取了STATSPACK看下TOP5事件,IO情况等好判断些,
另外,也可以看下当时的执行计划是什么样子来分析。楼上也有说选择性,这可能要看你平时做表分析是什么情况,因为表分析出来后的信息,是作为执行计划的重要输入的,如果实际表数据与原来分析完了情况有很大不同,就可能跑错执行计划。
比如以前就是跑全面扫描(FULL SCAN)更有效,但随着数据的增加已不太适合,可又一直没做表分析,那数据库内部就还是认为原来那个执行计划是最好的。
create table as A select * from tab1 ;
然后你去用A这张表肯定不这样,