3条语句的执行效率和区别??

skyboy0720 2006-05-16 04:23:49
表T1 字段A 值1,2,3,4,5
表T2 字段B 值2,4

1:
SELECT * FROM T1 WHERE A=SOME(
SELECT B FROM T2);

2:
SELECT * FROM T1 WHERE A IN(
SELECT B FROM T2);

3:
SELECT * FROM T1 WHERE EXISTS(
SELECT 1 FROM T2 WHERE T1.A=B);

执行结果一样,问问有什么区别,特别是第一个SOME的用法,什么时候情况下用到哪种?
...全文
153 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
沝林 2006-05-16
  • 打赏
  • 举报
回复
ALL
Compares a value to each value in a list or returned by a subquery and yields TRUE if all of the individual comparisons yield TRUE.

ANY, SOME
Compares a value to each value in a list or returned by a subquery and yields TRUE if any of the individual comparisons yields TRUE.

EXISTS
Returns TRUE if a subquery returns at least one row.

IN
Tests for set membership.

上面是官方的解释,区别应该不大,具体看执行计划吧
raylle 2006-05-16
  • 打赏
  • 举报
回复
我在google搜了搜,又翻了oracle的联机文档,怎么都没找到some这个dd?
skyboy0720 2006-05-16
  • 打赏
  • 举报
回复
楼上说的第一句我赞同,我是从事SQL SERVER的,至于第1个是ORACLE的用法,我想知道什么情况下会用到!
raylle 2006-05-16
  • 打赏
  • 举报
回复
在oracle优化的文章里建议用exists替代in

至于第一个,没用过。搬板凳学习

17,377

社区成员

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

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