是否需要join

oreoconansisu 2013-12-13 10:28:15

--数据准备
create table #a(id int)
create table #b(id int)

insert into #a
select 1 union all
select 2

insert into #b
select 1

--方法1
select a.*,b.*
from #a a,#b b
where a.id=b.id

--方法2
select a.*,b.*
from #a a
inner join #b b on a.id=b.id

--问题:
--查看两者执行计划相同
--请问这2种方法究竟有何区别,哪一种方法的效率更高
...全文
251 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChinaITOldMan 2013-12-14
  • 打赏
  • 举报
回复
效率是一样的,方式1是以前的一种规范,现在建议用方法2的写法
LongRui888 2013-12-14
  • 打赏
  • 举报
回复
不过,建议用join,因为现在是2个表的关联,如果有5个表关联,那么关联条件就会很多,所以这个时候用join,所以能比较清晰
LongRui888 2013-12-14
  • 打赏
  • 举报
回复
这个是执行2个语句后的,执行计划。

从这个图,可以看出,2个执行计划,完全是一样的,而且个占用了50%的开销。

所以,这两种语句的写法是完全一样的。

tenhilltree 2013-12-14
  • 打赏
  • 举报
回复
tcmakebest 2013-12-13
  • 打赏
  • 举报
回复
JOIN 还有 LEFT 和 RIGHT 的用法,这是 where 无法代替的, 另外,使用 JOIN 使表之间的关系更加清晰,而不是混入一堆 where 条件中。
岩崽先生 2013-12-13
  • 打赏
  • 举报
回复
尽量使用Join 而不是Where来列出关联条件,特别是多个表联合的时候。 原因是: (1)在效率上,Where可能具有和Inner join一样的效率。但基本可以肯定的(通过SQLServer帮助和其它资料,以及本测试)是Join的效率不比Where差。 (2)使用Join可以帮助检查语句中的无效或者误写的关联条件 参考http://tech.163.com/07/0309/14/395APR410009158J.html
Andy__Huang 2013-12-13
  • 打赏
  • 举报
回复
sql server自动调优,这两个语句没有区别

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧