求两种sql写法效率问题

czhy 2013-04-09 11:19:17
第一种方式
select a.c1,a.c2,b.c3
from a
left join b on a.c1=b.c1
where a.c1='dddd' and b.c2='xxxxx'
第二种方式
select *
(
select a.c1,a.c2,b.c3
from a
left join b on a.c1=b.c2
) ab
where c1='dddd' and c2='xxxxx'
这两个效率会一样吗??
为什么??
...全文
220 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
anlianganl 2013-04-16
  • 打赏
  • 举报
回复
一样~~~~
seusoftware 2013-04-09
  • 打赏
  • 举报
回复
看执行计划哦,看sql server怎么决定他们的运行
  • 打赏
  • 举报
回复
引用 4 楼 czhy 的回复:
引用 2 楼 sz_haitao 的回复: 这个是笔误吧: a.c1=b.c2 笔误 第一种方式 select a.c1,a.c2,b.c3 from a left join b on a.c1=b.c1 where a.c1='dddd' and b.c2='xxxxx' 第二种方式 select * ( select a.c1,a.c2,b.c3 ……
应该是一样的,因为你的两个语句语义是一样的,所以关系引擎在解析的时候会做transformation,最后应该转换成相同的逻辑表达树,所以是一样的。
czhy 2013-04-09
  • 打赏
  • 举报
回复
引用 2 楼 sz_haitao 的回复:
这个是笔误吧: a.c1=b.c2
笔误 第一种方式 select a.c1,a.c2,b.c3 from a left join b on a.c1=b.c1 where a.c1='dddd' and b.c2='xxxxx' 第二种方式 select * ( select a.c1,a.c2,b.c3 from a left join b on a.c1=b.c1 ) ab where c1='dddd' and c2='xxxxx' 这两个效率会一样吗?? 为什么??
中国风 2013-04-09
  • 打赏
  • 举报
回复
where a.c1='dddd' and b.c2='xxxxx'

where c1='dddd' and c2='xxxxx
' 条件不相同,不可比性 where a.c1='dddd' and b.c2='xxxxx'与left join 等同于inner join 选中两个语句直接看执行计划
haitao 2013-04-09
  • 打赏
  • 举报
回复
这个是笔误吧: a.c1=b.c2
haitao 2013-04-09
  • 打赏
  • 举报
回复
一样,数据库引擎会优化
SQL77 2013-04-09
  • 打赏
  • 举报
回复
引用 4 楼 czhy 的回复:
引用 2 楼 sz_haitao 的回复: 这个是笔误吧: a.c1=b.c2 笔误 第一种方式 select a.c1,a.c2,b.c3 from a left join b on a.c1=b.c1 where a.c1='dddd' and b.c2='xxxxx' 第二种方式 select * ( select a.c1,a.c2,b.c3 ……
第一个是B.C2.第二个是A.C2一样么?
昵称被占用了 2013-04-09
  • 打赏
  • 举报
回复
无论从什么角度,第二个都不如第一个 如果没有优化器,第二个效率不如第一个
弘恩 2013-04-09
  • 打赏
  • 举报
回复
应该是一样的,选中语句,点击CTRL+L,生成一下执行计划。
黄_瓜 2013-04-09
  • 打赏
  • 举报
回复
引用 4 楼 czhy 的回复:
引用 2 楼 sz_haitao 的回复:这个是笔误吧: a.c1=b.c2 笔误 第一种方式 select a.c1,a.c2,b.c3 from a left join b on a.c1=b.c1 where a.c1='dddd' and b.c2='xxxxx' 第二种方式 select * ( select a.c1,a……
一模一样 因为优化器自动优化了。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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