sql server JOIN 执行顺序问题

jldzy 2015-03-25 12:58:15
现在有2个写法
select ...
from a
join b on ..
join c on ...
join d on ...
where ....

select
from a, b ,c ,d
where ....

第一种写法是 按照顺序执行的吗,
第2种写法,是怎么执行的,还是随机执行的?也就是 哪个表当做主表。
...全文
302 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lisa_2015 2015-04-16
  • 打赏
  • 举报
回复
第一个on 是SQL-92 的语法,第二个是SQL -89 的语法,数据引擎以相同的方式解释,没有什么性能差别。第一种的写法更安全,第二种容易忘记联接条件变成交叉连接。
gw6328 2015-03-25
  • 打赏
  • 举报
回复
书上说是从上到下。里面细节。最后的效果可能有些优化过后的。比如有where条件可能有些本根就不用参与计算了。 但是过程是一个一个join的。 一个join生成一个中间表,再用中间表join下一个,再生成一个中间表。
wanglei8 2015-03-25
  • 打赏
  • 举报
回复
是的,sql server会根据统计数据自动生成最高效的执行计划,这两种不同的写法会生成相同的执行计划,不过最好使用join的方式,这样看起来最直观,未来维护也更方便些。
jldzy 2015-03-25
  • 打赏
  • 举报
回复
那岂不是 这2 种写法是等价的,
LongRui888 2015-03-25
  • 打赏
  • 举报
回复
这个不一定的,要看实际的执行计划。 因为 虽然从顺序上 是a,b,c,d 但是sql server最后会根据实际的cost,来决定 到底是按照上面顺序来关联,因为 以那个表来关联另一个表,开销也是不同的,所以 sql server会选择开销最低的

34,594

社区成员

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

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