谢了。用到联合索引(a,b)时,如果条件走的是a,c,是不是就不走索引了?

解决方案 »

  1.   

    是我作 我就去看oracle sql语句的执行机会 
    sqlplus 下面打 set auotrace on 就可以看执行计划了 不过看懂要去看些参考书
      

  2.   

    explain plan显示是执行索引的步骤吧.我想看所有条件的执行过程
      

  3.   

    谢了。用到联合索引(a,b)时,如果条件走的是a,c,是不是就不走索引了?这样能用到索引
      

  4.   

    在语句执行过程中系统会自动使用已有的索引, 当然如果你不想让系统使用索引,可以自己来控制, 比如:id上有索引,不想让系统用:select * from tablename where id+0=5
      

  5.   

    转:
    WHERE子句中的连接顺序. 
       ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. 
    例如: 
    (低效,执行时间156.3秒) 
    SELECT … 
    FROM EMP E 
    WHERE SAL > 50000 
    AND JOB = ‘MANAGER’ 
    AND 25 < (SELECT COUNT(*) FROM EMP 
                 WHERE MGR=E.EMPNO); 
    (高效,执行时间10.6秒) 
    SELECT … 
    FROM EMP E 
    WHERE 25 < (SELECT COUNT(*) FROM EMP 
                 WHERE MGR=E.EMPNO) 
    AND SAL > 50000 
    AND JOB = ‘MANAGER’; 
      

  6.   

    我问一下,在一个where条件里的执行顺序是怎样的。
    是不是从左到右。
    就象下面的代码,我怕万一它也是反的就需要改顺序了。
    WHERE ...
    AND   (AAA IS NULL OR A.B = AAA)