多表子查询与连接查询哪个优?

gmlxf 2003-08-16 03:16:49
如:
子查询:select T1.*,T2.a from T1,T2 where T1.id=T2.id
连接查询:select *,(select a from T2 where id=T1.id) as a from T1

以上两句的区别(除写法)在什么地方?各自有什么优势?

...全文
230 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
97866 2003-08-16
  • 打赏
  • 举报
回复
在 Transact-SQL 中,包括子查询的语句和不包括子查询但语义上等效的语句在性能方面通常没有区别。但是,在一些必须检查存在性的情况中,使用联接会产生更好的性能。否则,为确保消除重复值,必须为外部查询的每个结果都处理嵌套查询。所以在这些情况下,联接方式会产生更好的效果。
zjcxc 元老 2003-08-16
  • 打赏
  • 举报
回复
应该是第一个吧.
gmlxf 2003-08-16
  • 打赏
  • 举报
回复
select T1.*,T2.a from T1,T2 where T1.id=T2.id
select *,(select a from T2 where id=T1.id) as a from T1

如果就是这两条语句相比,哪个会速度上占优?
pengdali 2003-08-16
  • 打赏
  • 举报
回复
select T1.*,T2.a from T1,T2 where T1.id=T2.id
t1.id到t2.id 是可以一对多的关系

select *,(select a from T2 where id=T1.id) as a from T1
t1.id到t2.id 是不可以一对多的关系

34,874

社区成员

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

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