社区
Oracle
帖子详情
多表连接时用inner join还是where?
蓝色_冰点
2009-09-10 11:03:51
RT
说下原因,顺便问一下它们的效率
我们公司里搞ORACLE数据库的人,都很排斥inner join,说是太慢,只有where才快
而我通常喜欢用inner join。理由是:逻辑清晰,把可以把连接条件和查询条件清晰的区别开来。而关于查询速度,我认为只要写得好,inner join一样不会慢。而如果用where来连接的话,把连接条件和查询条件都混在一个where里,看得很难受
...全文
1167
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的写法,仅此而已
内
连接
的两种表达方式
inner
join
与where子句
内
连接
的两种表达方式
inner
join
与where子句 其实都是求两个或两个以上表的交集
inner
join
是内
连接
,where是条件判断语句,用where语句可以实现内
连接
的功能,但区别在于where语句还可以加上其他条件,而
inner
join
则不可以了。 例如: selecta.*,b.*froma
inner
join
bona.id=b.id 等同于 selecta.*,b.*froma,bwherea.id=b.id 但如果用语句二的还可以接着写条件,...
inner
join
和where 区别
1 .WHERE子句中使用的
连接
语句,在数据库语言中,被称为隐性
连接
。
INNER
JOIN
……ON子句产生的
连接
称为显性
连接
。(其他
JOIN
参数也是显性
连接
)WHERE 和
INNER
JOIN
产生的
连接
关系,没有本质区别,结果也一样。但是!隐性
连接
随着数据库语言的规范和发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性
连接
,全部采用显性
连接
了。 2 .无论怎么
连接
,都可以用
join
子句...
Oracle中
Inner
join
和Where的区别
1 .Where子句中使用的
连接
语句,在数据库语言中,被称为隐性
连接
。
Inner
join
……on子句产生的
连接
称为显性
连接
。(其他
Join
参数也是显性
连接
)Where 和
Inner
join
产生的
连接
关系,没有本质区别,结果也一样。但是!隐性
连接
随着数据库语言的规范和发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性
连接
,全部采用显性
连接
了。 2 .无论怎么
连接
,都可以用Jo
inner
join
和where 区别 mysql问题
1 .WHERE子句中使用的
连接
语句,在数据库语言中,被称为隐性
连接
。
INNER
JOIN
……ON子句产生的
连接
称为显性
连接
。(其他
JOIN
参数也是显性
连接
)WHERE 和
INNER
JOIN
产生的
连接
关系,没有本质区别,结果也一样。但是!隐性
连接
随着数据库语言的规范和发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性
连接
,全部采用显性
连接
了。 2 .无论怎么
连接
,都可以用
join
子句,但是
连接
同一个表的时候,注意要定义别名,否则产生错误! a>
inner
join
:理解为“有
Left
Join
,Right
Join
,
Inner
Join
与where
连接
的区别
概述 连表是SQL常用的操作,但是连表不一样,得到的结果也不一样(在数据量大的时候尤为明显) Where
连接
select * from cc,cp where cc.id = cp.COUNTRY_ID where
连接
,主要是直接将两张表的数据,组合成一张临时表,然后通过where来筛选条件。条件为假的,就全部过滤掉。 Left
Join
select * from cc LEFT
JOIN
cp on cc.id = cp.COUNTRY_ID 左
连接
,是以左表为基准,不管
Oracle
17,078
社区成员
55,233
社区内容
发帖
与我相关
我的任务
Oracle
Oracle开发相关技术讨论
复制链接
扫一扫
分享
社区描述
Oracle开发相关技术讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章