关于in的两个问题

qyflaoda 2005-12-01 10:53:13
例如:

select a1,a2 from a where a1 in (select a1 from b)

1,我想用如下代替,效率是否可以提高?效率最高的是哪种?

select a.a1,a.a2 from a,b where a.a1=b.a1

2,如果在in后面的子查询里面有order by 子句,对外部的查询结果来说有意义吗?
...全文
103 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pakeyfanyin 2005-12-02
  • 打赏
  • 举报
回复
查詢效率的由高至低應為:
采用Exist(not Exist)-->直接多表JOIN-->采用In
子查詢--->JOIN--->全表查詢
wgsasd311 2005-12-02
  • 打赏
  • 举报
回复
支持二楼,没有实践就没能发言权。
liuyi8903 2005-12-02
  • 打赏
  • 举报
回复
我的意思是说你可能没有做够充分的测试吧.
delphi6net 2005-12-02
  • 打赏
  • 举报
回复
1\ 连接查询select a.a1,a.a2 from a,b where a.a1=b.a1 效率会比较高, select字段加上表名会避免搜索数字字典, 另外要尽量不使用in,它是FTS

2。同上
liuyi8903 2005-12-02
  • 打赏
  • 举报
回复
楼上这么说的理由是什么呢?你做过测试吗?
ab5669 2005-12-02
  • 打赏
  • 举报
回复
1、
子查询 select a1,a2 from a where a1 in (select a1 from b)
的效率比
连接查询select a.a1,a.a2 from a,b where a.a1=b.a1
的效率高。
2、
在in后面的子查询里面有order by 子句,对外部的查询结果来说无意义

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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