select d.deptno,d.dname,e.empno,e.ename
from  dept d,emp e
where 1=1
and e.deptno = d.deptno  
and e.deptno = 10

解决方案 »

  1.   

    这个和你的环境有关系,你的数据库的现在的优化模式是RBO还是CBO,RBO总是从FROM的最后一个表定为驱动表,CBO的情况比较复杂,和你是否有索引、是否进行了表、索引的统计都有关,一般来说,它会用FROM的的第一个表做驱动表。具体你可以自己根据执行计划来分析。(SET AUTOTRACE ON)
    执行时将SET TIMING ON 打开,看看不同情况下的花费时间。
      

  2.   

    具体视索引建立情况:1、有两个索引存在的情况下,from后面大表在前(注:如果两个表在deptno都建立了索引,可以选择这种方式)2、有一个索引,则顺序无关3、都没有索引,则大表应该在后