事例:
SELECT a.id,
       b.id,
       c.id,
       d.id
  FROM a_test a
  inner join b_test b ON a.id= b.id  and a.code=b.code  left join c_test c  ON b.id= c.id  and b.code=c.code  left join d_test d  ON d.id = c.id
  where a.name='小明'问下: a.code=b.code 换成最后面 where a.code=b.code       b.code=c.code 换成最后面 where b.code=c.code 有什么区别吗?这条SQL 执行顺序是什么样子的?谢谢。

解决方案 »

  1.   


    --解释
    explain plan for
    SELECT a.id,
      b.id,
      c.id,
      d.id
      FROM a_test a
      inner join b_test b ON a.id= b.id and a.code=b.code left join c_test c ON b.id= c.id and b.code=c.code left join d_test d ON d.id = c.id
      where a.name='小明';
    --查看执行计划
    select * from table(dbms_xplan.display());
    --你看下执行出来的predicate information就清楚顺序是什么样的了