社区
Oracle
帖子详情
多表连接时用inner join还是where?
蓝色_冰点
2009-09-10 11:03:51
RT
说下原因,顺便问一下它们的效率
我们公司里搞ORACLE数据库的人,都很排斥inner join,说是太慢,只有where才快
而我通常喜欢用inner join。理由是:逻辑清晰,把可以把连接条件和查询条件清晰的区别开来。而关于查询速度,我认为只要写得好,inner join一样不会慢。而如果用where来连接的话,把连接条件和查询条件都混在一个where里,看得很难受
...全文
1234
10
打赏
收藏
多表连接时用inner join还是where?
RT 说下原因,顺便问一下它们的效率 我们公司里搞ORACLE数据库的人,都很排斥inner join,说是太慢,只有where才快 而我通常喜欢用inner join。理由是:逻辑清晰,把可以把连接条件和查询条件清晰的区别开来。而关于查询速度,我认为只要写得好,inner join一样不会慢。而如果用where来连接的话,把连接条件和查询条件都混在一个where里,看得很难受
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
蓝色_冰点
2009-09-10
打赏
举报
回复
[Quote=引用 9 楼 wildwave 的回复:]
我们公司他们也这么写,有一次我把子查询改成表连接,把结果给那人看,时间少用了将近一半。过几天,他照样写他的子查询..
[/Quote]
同感啊。。。。。。因为受不了,所以我也改了。。。。。。实践证明改过以后速度快多了
小灰狼W
2009-09-10
打赏
举报
回复
[Quote=引用 6 楼 sharp_ice 的回复:]
顺便问一下where t1.key1=t2.key1(+); 这个(+)是什么意思
我是Oracle新手
[/Quote]
(+)放在右边是左连接,放左边是右连接..
[Quote=引用 2 楼 sharp_ice 的回复:]
还有就是,像这种写法:
select fied1,field2,(select field3 from t2 where t1.key1=t2.key1)
from t1
我很受不了这种写法。。。。。。[/Quote]
我们公司他们也这么写,有一次我把子查询改成表连接,把结果给那人看,时间少用了将近一半。过几天,他照样写他的子查询..
ojuju10
2009-09-10
打赏
举报
回复
[Quote=引用 6 楼 sharp_ice 的回复:]
顺便问一下where t1.key1=t2.key1(+); 这个(+)是什么意思
我是Oracle新手
[/Quote]
外连接中的左连接
相当于left join
ojuju10
2009-09-10
打赏
举报
回复
[Quote=引用 2 楼 sharp_ice 的回复:]
还有就是,像这种写法:
select fied1,field2,(select field3 from t2 where t1.key1=t2.key1)
from t1
我很受不了这种写法。。。。。。
[/Quote]
子查询作为字段被查询出来。
与连接查询结果不一样的,
select fied1,field2,select field3
from t1,t2
where t1.key1=t2.key1
只有满足条件的t1.key1=t2.key1才会被查询出来
而楼主的是查询t1的所有记录
蓝色_冰点
2009-09-10
打赏
举报
回复
顺便问一下where t1.key1=t2.key1(+); 这个(+)是什么意思
我是Oracle新手
ojuju10
2009-09-10
打赏
举报
回复
习惯问题,用inner join 与where没有啥区别
如果用left join 和 right join 情况就不一样了
shiyiwan
2009-09-10
打赏
举报
回复
确实受不了,很恶劣
为什么不写成
select fied1,field2,t2.field3
from t1, t2
where t1.key1=t2.key1(+);
[Quote=引用 2 楼 sharp_ice 的回复:]
还有就是,像这种写法:
select fied1,field2,(select field3 from t2 where t1.key1=t2.key1)
from t1
我很受不了这种写法。。。。。。
[/Quote]
shiyiwan
2009-09-10
打赏
举报
回复
唉,我也很排斥inner join,因为在oracle里面,inner join就是join,
明明能用where一下写完的东西要用join一个一个连,看起来真难受。
而且更重要一点,早期的oracle不支持inner join
用where对oracle来说解析上应该更快。
蓝色_冰点
2009-09-10
打赏
举报
回复
还有就是,像这种写法:
select fied1,field2,(select field3 from t2 where t1.key1=t2.key1)
from t1
我很受不了这种写法。。。。。。
小灰狼W
2009-09-10
打赏
举报
回复
...一样的,inner join是通用的写法
where是oracle的写法,仅此而已
left
join
连表问题解析:on后多条件无效 & where与on的区别
本文围绕项目中
多表
联合查询的问题展开,探讨了SQL里LEFT
JOIN
连接
两张表时的两个现象:一是ON后用AND
连接
的条件只有第一个生效;二是加上WHERE后结果等同于
INNER
JOIN
。还分析了ON和WHERE条件的执行顺序及原理,并给出了相应解决方案。
left
join
临时表_MySQL中的SQL语句的链表查询,约束,表结构的说明
本文详细介绍了MySQL中的
多表
查询,包括
INNER
JOIN
、LEFT
JOIN
、RIGHT
JOIN
的用法,解释了它们在
连接
表时ON与WHERE子句的区别,并探讨了UNION和UNION ALL在合并结果集时的不同,以及IN操作符的使用。
MySQL中的各种
JOIN
(CROSS
JOIN
,
INNER
JOIN
, LEFT [OUTER]
本文详细介绍了MySQL中的
JOIN
操作,包括CROSS
JOIN
(笛卡尔积)、
INNER
JOIN
(等值
连接
)、LEFT OUTER
JOIN
和RIGHT OUTER
JOIN
(外
连接
)。通过实例展示了如何使用ON、WHERE和USING子句来指定
连接
条件,并提供了
多表
查询时选择合适
连接
方式的指导。
【重学 MySQL】二十四、笛卡尔积的错误和正确的
多表
查询
在数据库
多表
查询中,笛卡尔积指无明确
连接
条件时,
多表
每行相互组合,会使结果集膨胀且含大量无用数据。如学生表和课程表无
连接
条件查询会产生笛卡尔积。SQL提供多种
连接
操作避免此情况,如
INNER
JOIN
等,也可用WHERE子句隐式内连。
left
join
和子查询效率_Mysql
多表
联合查询效率分析及优化
本文探讨了MySQL中的
多表
连接
类型,重点分析了LEFT
JOIN
的效率和优化策略。介绍了LEFT
JOIN
的工作原理,指出在左表数据量大时可能导致查询变慢。文章还提供了如何利用ON、WHERE子句优化查询,以及LEFT
JOIN
如何转化为
INNER
JOIN
以提高效率的方法。
Oracle
17,134
社区成员
55,258
社区内容
发帖
与我相关
我的任务
Oracle
Oracle开发相关技术讨论
复制链接
扫一扫
分享
社区描述
Oracle开发相关技术讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章