关于表内联,这条种写法有没有性能上的差异?第一种:
SELECT *
FROM Books b, Authors a
WHERE b.AuthorID = a.ID第二种:
SELECT *
FROM Books b
    INNER JOIN Authors a
        ON b.AuthorID = a.ID从 SQL Server 的分析工具看来执行过程是一样的。

解决方案 »

  1.   

     =  inner join
    *=  left join 
    =*  right join是习惯,好像前种写法不通用,比如在sqlserver2000中 *=/=*没有问题,在sqlserver2008里就不行了,join 是连接,而select是选择,可是sql执行语句是优化过的,最终执行的那个语句只有一个,我想应该是连接,就是说 = 会转换成 inner join操作,如果直接写成inner join至少部分消费在优化上的时间。至于是 = 转换为 inner join  还是 inner join 转换为 = 需要证实,我暂时不确定,但是从sqlserver的版本看, *=  =* 这种用法已经被放弃了。
      

  2.   

    第一种:
    SELECT *
    FROM Books b, Authors a
    WHERE b.AuthorID = a.ID
    这个是ANSI SQL89语法第二种:
    SELECT *
    FROM Books b
      INNER JOIN Authors a
      ON b.AuthorID = a.ID
    这个是ANSI SQL92语法
    从性能和执行计划来看,两者没有区别。但规范起见,还是推荐采用第二种写法。
    因为第一种写法如果忘记写WHERE子句,语法上仍然是正确的,但结果就差很多了,变成CROSS JOIN了。
      

  3.   

    实践出真知
    查询优化器
    statitistic io
    statitistic time
      

  4.   

    你可以查一查sql的帮助文件,两种写法没有区别
      

  5.   

    执行没有区别,当使用inner join写法的时候必须用on关键字