SQL中in与exists的区别与用法

SQL中in与exists的区别与用法

1.简介

    SQL中in与exists都可以用来查找表中,某个数据是否满足存在的条件。它们的功能都是一样的,但是合理的使用in和exists,会让SQL的查找速度快上很多。这里先上结论:当主表数据较大,副表数据较少时,使用in效率较高;当主表数据较少,副表数据较大时,使用exists效率高。

2.实验

    先看实际项目中的两段SQL语句,分别是in和exists.

in

exists

    现在开始查询人员的授权状况,主表是人员表,共有3368条人员信息的记录,副表是授权表,有94090条授权记录。一条人员信息在授权表里可能多多条对应关系。

in 已授权人员

not in 未授权人员

exists 已授权人员

not exists 未授权人员

3.实验结果

    可以看出,查找授权人员时,in和exists的花费时间都差不多,但是查找未授权人员信息时,仅仅9条数据,in方法耗费了34s的时间,而not exists仅仅耗费了218ms。这个差距可以说是非常明显了,并且会随着两表的数据增加而继续拉大差距。


    对,你没有看错,可能和业务逻辑也有关系,但是差距真的就是这么大…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值