EXISTS和in的区别?EXISTS和普通where条件查询有啥区别

EXISTS和in的区别?

EXISTS 用于检查子查询是否至少会返回一行数据,该子查询实际上 并不返回任何数据 ,而是 返回值 True False
SELECT *
FROM users u
WHERE EXISTS (
SELECT *
FROM orders o
WHERE o.user_id = u.id
);
# 这个查询将返回所有存在于表格orders中的用户
exists 用于对外表记录做筛选。 exists 会遍历外表,将外查询表的每一行,代入内查询进行判断。当 exists 里的条件语句能够返回记录行时,条件就为真,返回外表当前记录。反之如果 exists 里的条件语句不能返回记录行,条件为假,则外表当前记录被丢弃。
select a.* from A where exists(select 1 from B b where a.id=b.id)

in 是先把后边的语句查出来放到临时表中,然后遍历临时表,将临时表的每一行,代入外查询去查找。 ( 二者的前后顺序不一样 )
select * from A where id in(select id from B)
子查询的表比较大的时候 ,使用 exists 可以有效减少总的循环次数来提升速度; 当外查询的表比较大 的时候 ,使用 in 可以有效减少对外查询表循环遍历来提升速度。 EXISTS 用于查找在子查询中是否存在记录,而IN 用于查找记录是否与一组值中的任何一个匹配

EXISTS和普通where条件查询有啥区别 

  1. 1EXISTS用于子查询的存在性判断:EXISTS是一个用于判断子查询是否返回结果的布尔表达式。它不会返回子查询的实际结果集,只会返回布尔值(TRUEFALSE)。它通常用于主查询中,以判断子查询是否返回至少一条记录。而普通的WHERE条件查询是用来过滤主查询结果中的记录,返回满足条件的记录集。
  2. EXISTS对性能更友好:EXISTS通常在处理大型数据集时比普通的WHERE条件查询更高效。它仅需找到一个匹配记录即可返回,而不会生成完整的结果集。这意味着EXISTS可以提前终止搜索,从而减少了不必要的计算和I/O操作,提高了查询性能。
  3. 使用场景不同:EXISTS通常在需要基于子查询的结果是否存在来做出决策的场景中使用。例如,使用EXISTS来判断某个记录是否存在,从而在主查询中执行不同的逻辑。普通的WHERE条件查询则适用于对主查询结果进行简单的筛选和条件匹配的场景。
总之, EXISTS 适用于处理子查询的存在性判断和复杂逻辑的场景,通常在性能和查询结果的要求 方面更高效。普通的 WHERE 条件查询适用于简单筛选和条件匹配的场景
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值