sql in和exist的区别和联系

本文详细解释了SQL查询中Exists与In的区别。Exists用于判断是否存在符合条件的记录,而In则用于检查某个值是否在一个预定义的集合中。两者虽然都能达到过滤数据的目的,但在执行效率和查询方式上有所不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

exists是用来判断是否存在的,当exists(查询)中的查询存在结果时则返回真,否则返回假。not exists则相反。

exists做为where 条件时,是先对where 前的主查询询进行查询,然后用主查询的结果一个一个的代入exists的查询进行判断,如果为真则输出当前这一条主查询的结果,否则不输出。

in则是先对子查询进行查询,然后把子查询所得的数据全部映射到内存中hash表中,最后进行主查询,对主查询查询出来的结果和子查询的结果进行比较,一条一条的进行筛选。

exist和in都是一条一条的进行筛选,不同的是,in是先将范围查询出来,即先进行子查询,而exist则是查一条,再放到子查询中比较查询,即后执行子查询。

in和exists
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。一直以来认为exists比in效率高的说法是不准确的。

hash连接:[url]http://technet.microsoft.com/zh-CN/library/ms189313[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值