请教一下~~2个sql语句的区别

yf_leo 2009-06-22 03:08:24
select count(*),sum(t1.a) from table1 t1 inner join table2 t2 on t1.b=t2.b and t1.c='123';
select count(*),sum(t1.a) from table1 t1 inner join table2 t2 on t1.b=t2.b where t1.c='123';

请问一下这两个语句的区别。

1.查询结果是否是相同
2.谁的效率会高一点
3.数据库后台处理的区别
...全文
37 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
软猫克鲁 2009-06-23
  • 打赏
  • 举报
回复
理论上第一个稍微快一点点。
但是,10G以后的版本应该是————没有任何区别。
lqb2008 2009-06-23
  • 打赏
  • 举报
回复
我曾经用过,当时感觉用where要快点!
忠无wei 2009-06-23
  • 打赏
  • 举报
回复
学习哈
pinklotus 2009-06-23
  • 打赏
  • 举报
回复
同意五楼说的,最好看看执行计划,看看区别在哪?
ojuju10 2009-06-23
  • 打赏
  • 举报
回复
inner join 应该是一样的,不过改成left join 或者right join 结果就不一样了
inthirties 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 yf_leo 的帖子:]
select count(*),sum(t1.a) from table1 t1 inner join table2 t2 on t1.b=t2.b and t1.c='123';
select count(*),sum(t1.a) from table1 t1 inner join table2 t2 on t1.b=t2.b where t1.c='123';

请问一下这两个语句的区别。

1.查询结果是否是相同
2.谁的效率会高一点
3.数据库后台处理的区别

[/Quote]

从结果上看,应该是一致的

执行计划可能有些差别,你可以看看执行计划先了。
yf_leo 2009-06-22
  • 打赏
  • 举报
回复
结果应该是一样的~~~后台的处理方式~呢~~
cab1225 2009-06-22
  • 打赏
  • 举报
回复
差不多吧。。
cosio 2009-06-22
  • 打赏
  • 举报
回复
select * from
(select count(*),sum(t1.a) from table1 t1 where t1.c='123') t1 inner join table2 t2 on t1.b=t2.b ;

还不如这样子写,效率更快一点!
hebo2005 2009-06-22
  • 打赏
  • 举报
回复
一样

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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