社区
MS-SQL Server
帖子详情
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
打赏
收藏
sql server JOIN 执行顺序问题
现在有2个写法 select ... from a join b on .. join c on ... join d on ... where .... select from a, b ,c ,d where .... 第一种写法是 按照顺序执行的吗, 第2种写法,是怎么执行的,还是随机执行的?也就是 哪个表当做主表。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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会选择开销最低的
SQL
Server
中
SQL
语句
执行
顺序
SQL
Server
中
SQL
语句
执行
顺序
sql
server
语句
执行
顺序
注:
sql
server
不同于其他编程预言的最明显特征是处理代码的
顺序
。 每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只有最后一步生成的表才会返回给调用者。如果没有在查询中指定某一子句,将跳过相应的步骤。 1》FROM:对from子句中前两个表
执行
笛卡尔积(交叉联接 ),生成虚拟表VT1; 2》ON :对VT1应用on筛选器。只有那些使ON筛选条件为真的行才被插入VT2; 3》OUTER(
JOIN
):如果指定了OUTER .
三、谈谈
SQL
Server
中
Sql
执行
的
顺序
SQL
语句查询
执行
顺序
Sql
Server
中
Sql
语句的逻辑
执行
顺序
sql
server
sql
执行
顺序
Sql
Server
中
sql
执行
顺序
对于一条
Sql
语句(主要指的是查询语句)的
执行
顺序
,很多开发人员并不是十分的了解,哪怕已经工作几年的所谓高级开发人员也是一样,对于他们来说,只关心最终得到的结果,并不关心中间的过程,那么了解
Sql
Server
的语句
执行
过程到底有什么用处的? 1、如果不了解
执行
过程,下面的
Sql
语句你认为结果是一样的吗? select * from Customers AS C left
join
Orders AS O On C.customerid=O.customerid and C.customeri.
MS-SQL Server
34,594
社区成员
254,589
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章