oracle突然查询很慢,例如:select *from tab1 where flag=3 很慢!但是select *from tab1 where flag=2 这个查询条件就很快!
注:flag=2 该值是“已完成”的意思;flag=3 该值是“正在执行”的意思。当flag=3的时候,后台有接口执行,执行完了就会变成2两个不同的值,查询速度却一快一慢求解~

解决方案 »

  1.   

    嗯,flag=3是程序提交后的值,提交=update,等待交互的状态
      

  2.   

    你说是突然变慢,就是在此之前,分别这两个查询都不慢吧。
    会不会是其它模块也一起执行,也访问了相同表产生了资源锁竞争等待?
    具体原因还是要采取了STATSPACK看下TOP5事件,IO情况等好判断些,
    另外,也可以看下当时的执行计划是什么样子来分析。楼上也有说选择性,这可能要看你平时做表分析是什么情况,因为表分析出来后的信息,是作为执行计划的重要输入的,如果实际表数据与原来分析完了情况有很大不同,就可能跑错执行计划。
    比如以前就是跑全面扫描(FULL SCAN)更有效,但随着数据的增加已不太适合,可又一直没做表分析,那数据库内部就还是认为原来那个执行计划是最好的。
      

  3.   

        这种情况有遇见过, 有可能表高水位影响的,  
      
      create  table as A select  *  from tab1 ;
    然后你去用A这张表肯定不这样,  
      

  4.   

    Count 一下这两个条件下各有多少条记录