1,SELECT...省略...WHERE A1=1 OR A2=1 OR A3=1 
2,SELECT...省略...WHERE (A1=1 AND B1=1) OR (A2=1 AND B1=1) OR (A3=1 AND B3=1)
这两个SQL文只是意思一下不是真正的SQL文,我只是想问1的SQL文和2的SQL文在条件部分,只是相差 一个AND的条件 照理来说运行时间应该不会差多少,但是实际上前一个要比后一个时间要短很多,可能是10倍的差距!!!有谁能讲解一下,这可能是因为什么?,数据库在解释SQL文的时候如何按什么顺序解析.对于AND 和 OR 是如何解析的,这可能涉及到数据库工作原理!请明白的大虾讲解一下?

解决方案 »

  1.   

    直观来看,条件A1=1 OR A2=1 OR A3=1,每条记录最多判断3次;
    条件(A1=1 AND B1=1) OR (A2=1 AND B1=1) OR (A3=1 AND B3=1),每条记录至少需要判断2次,如(A3=1 AND B3=1)成立,最多需要6次。
      

  2.   


    对表做analyze
    有了统计数据,CBO才会选择正确的执行计划
      

  3.   

    看看执行计划,你就知道你的sql到底干了什么!为什么速度不一样!
      

  4.   

    楼上说的也有道理,我对ORACLE管理不太清楚,请问如何查看执行计划?????????谢谢
      

  5.   

    用plsql developer、toad等工具或者在sqlplus里面set autotrace on/traceonly
      

  6.   

    RondyBin(冰) 
       有索引固然好,但是如果条件用到了很多字段,也不能把所有用到的字段全都加在索引里吧?