in 和 exists的使用

相比较而言,in关键字使用的要更多一点,因为语句更容易理解。
如下:
在这里插入图片描述
在这里插入图片描述
查询张三老师所教的课程名称
使用in关键字查询
select c_name from course c where c.t_id
in (select t_id from teacher where t_name = ‘张三’)

使用exists关键字查询
select c_name from course c where
EXISTS (select t_id from teacher t where t.t_id=c.t_id and t.t_name=‘张三’)

这一比较就知道in关键字更简单
但是in关键字不走索引,如果子集里的数据量很大的话,不走索引的效率会非常低

in 和exists的区别:
(in 是先查询子集,然后进行全表检索,一行一行的去查询,查询到符合in字句的结果就返回,反之就继续查询下一条,不走索引)

(exists 是先进行一次外部查询,然后开始执行子查询,并且每次子查询都会引用外部查询的结果集,如果子查询根据外部结果查询到了数据,就返回true。使用子查询的结果来确定外部查询的结果集。子查询会用到索引。如果我们有100行数据,那exists会进行101次查询,一次查询外部,100次查询子集)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值