SQL 1
select a.*,b.,c.*,d.* from Table_A as a
    inner join Table_B as b
        on a.ID = b.ReferenceID
    inner join Table_C as c
        on b.ID = c.ReferenceID
    inner join Table_D as d
        on c.ID = d.ReferenceID
    where a.SKU = '123456789'
SQL 2
select a.*,b.,c.*,d.* from Table_A as a
    inner join Table_B as b
        on a.ID = b.ReferenceID
        and a.SKU = '123456789'
    inner join Table_C as c
        on b.ID = c.ReferenceID
    inner join Table_D as d
        on c.ID = d.ReferenceID不考虑数据库设计的问题,两条SQL的性能更好?
看过一些书是说先join后where..这样的话...是不是SQL 2 比较好.?
各位看法如何..?

解决方案 »

  1.   

    inner join
    没有区别.
    left join
    结果可能不一样.因此没有可比性.
      

  2.   

    都是INNER JOIN的话 一样的效率
      

  3.   

    inner join和where一样
    left join就不一样了
      

  4.   

    inner join和where一样left join 没有可比性
      

  5.   

    你可以看执行计划,在INNER JOIN的情况下,两句话是一样的。如果是LEFT JOIN或者RIGHT JOIN,完全是不同的结果集。
      

  6.   

    一样的, 看执行计划.sql引擎会自动帮你选择最优的执行计划.