关于表内联,这条种写法有没有性能上的差异?第一种:
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 的分析工具看来执行过程是一样的。
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 的分析工具看来执行过程是一样的。
*= left join
=* right join是习惯,好像前种写法不通用,比如在sqlserver2000中 *=/=*没有问题,在sqlserver2008里就不行了,join 是连接,而select是选择,可是sql执行语句是优化过的,最终执行的那个语句只有一个,我想应该是连接,就是说 = 会转换成 inner join操作,如果直接写成inner join至少部分消费在优化上的时间。至于是 = 转换为 inner join 还是 inner join 转换为 = 需要证实,我暂时不确定,但是从sqlserver的版本看, *= =* 这种用法已经被放弃了。
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了。
查询优化器
statitistic io
statitistic time