社区
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种写法,是怎么执行的,还是随机执行的?也就是 哪个表当做主表。
...全文
356
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
/My
SQL
通用优化方案
应急优化:改用 LEFT
JOIN
或加执行计划提示(FORCE ORDER/STRAIGHT_
JOIN
),快速见效;稳定优化:临时表落地聚合结果,彻底摆脱优化器依赖,适配海量数据场景;长期优化:给维度表补充 “关联字段 + 查询字段” 的索引,从根源提升关联效率。实际开发中,建议优先采用 “临时表 + 索引” 的组合方案,既保证性能稳定性,又兼顾业务逻辑准确性,是解决这类
问题
的最优实践。
牛客 — My
SQL
选择题练习中自己的错题(3)
错题解析 1.给出数据表 score(stu-id,name,math,english,Chinese), 下列语句正确的是( A) 原因解析: B不对,*是多行,sum不是 C同样的道理 D中正确格式delete from 表名; A实际也不对,列名c的大小写; 2.
SQL
Server
2005 属于( D) 原因解析:
SQL
Server
2005 是 Microsoft 公司推出的关系型数据库管理系统。 3.设有一个数据库mydb中有一个表tb1,表中有六个字段,主键为ID,有十条记录
SQL
Server
中
SQL
语句
执行顺序
SQL
Server
中
SQL
语句
执行顺序
SQL
中left outer
join
与inner
join
混用时,
SQL
Server
自动优化执行计划
以下为示例代码: set statistics profile off DECLARE @t TABLE(id1 INT,c VARCHAR(10)) INSERT INTO @t VALUES(1,'ab') INSERT INTO @t VALUES(2,'abc') INSERT INTO @t VALUES(3,'abcd') INSERT INTO @t VALUE
关于
SQL
Server
中left
join
on and 用法的介绍
一般情况下,
SQL
语句的
执行顺序
如下所示: (1)from (2)on (3)
join
(4)where (5)group by (6)having (7)select (8)distinct (9)union (10)order by 从
SQL
语句
执行顺序
的这个角度,我们可以很好的理解left
join
on and的用法。 以
SQL
Server
为例,先创建两个测...
MS-SQL Server
34,875
社区成员
254,639
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章