问个关于EXISTS的性能问题

accomp 2011-11-17 01:53:37
现在写的sql,exists的子查询中,我用了GROUP BY ,查出来数据是不重复的。 但GROUP BY 本身就降低查询速度, 要是不用GROUP BY,子查询有重复,无所谓,外层查询结果是对的,不知道EXISTS中有重复数据,对性能影响咋样

例1 SELECT ID FROM TABLE1 EXISTS (SELECT ID FROM TABLE2 WHERE TABLE1.id = TABLE2.ID AND ..... GROUP BY ID )
相当于 SELECT ID FROM TABLE1 EXISTS (1,2,3,4,5)

例2 SELECT ID FROM TABLE1 EXISTS (SELECT ID FROM TABLE2 WHERE TABLE1.id = TABLE2.ID AND .....)
相当于 SELECT ID FROM TABLE1 EXISTS (1,1,1,2,2,2,3,3,4,5)


PS:TABLE1 ID 是主键, TABLE2 ID 和 ID2
1的子查询有分组,2的子查询有重复数据,哪个性能高?
...全文
173 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
accomp 2011-11-18
  • 打赏
  • 举报
回复
没得到想要得 结帖
淡定的峰哥 2011-11-17
  • 打赏
  • 举报
回复
看执行计划了
accomp 2011-11-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dawugui 的回复:]
其实你何必问呢,直接试试不就知道了?
[/Quote]
结果是一样的 我想知道效率上有什么区别
dawugui 2011-11-17
  • 打赏
  • 举报
回复
其实你何必问呢,直接试试不就知道了?
accomp 2011-11-17
  • 打赏
  • 举报
回复
sql文以我写的为准,里面有关联条件 。下面写的1,2,3 只是为了便于理解

我就是想知道 ,EXISTS 后面的子查询有重复数据时,对性能有什么影响
BenChiM888 2011-11-17
  • 打赏
  • 举报
回复

--下面的写法也是可以的
SELECT ID FROM TABLE1 EXISTS (SELECT 1 FROM TABLE2 WHERE TABLE1.id = TABLE2.ID AND ..... )
;
--按照你的理解
SELECT ID FROM TABLE1 EXISTS (1,1,.....);--显然是不对的。


BenChiM888 2011-11-17
  • 打赏
  • 举报
回复
同样用例2,你举得例子不完全正确。
相当于 SELECT ID FROM TABLE1 EXISTS (1,2,3,4,5) 错误,
SELECT ID FROM TABLE1 EXISTS (1,1,1,2,2,2,3,3,4,5) 也错误。

exists 里面的sql当有数据能关联的时候 返回为 真,否则为假,只要TABLE1.id = TABLE2.ID 用的上TABLE2 的索引,里面有没有重复记录数据库不关心。
中国风 2011-11-17
  • 打赏
  • 举报
回复
用例2

例1有點多餘了,樓主可測測

17,377

社区成员

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

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