【157期】面试官:来谈谈SQL中的in与not in、exists与not exists的区别
阅读本文大概需要 2 分钟。
来自:cnblogs.com/seasons1987/p/3169356.html
1、in和exists
select * from A where cc in(select cc from B) -->效率低,用到了A表上cc列的索引;
select * from A where exists(select cc from B where cc=A.cc) -->效率高,用到了B表上cc列的索引。
select * from B where cc in(select cc from A) -->效率高,用到了B表上cc列的索引
select * from B where exists(select cc from A where cc=B.cc) -->效率低,用到了A表上cc列的索引。
2、not in 和not exists
create table #t1(c1 int,c2 int);
create table #t2(c1 int,c2 int);
insert into #t1 values(1,2);
insert into #t1 values(1,3);
insert into #t2 values(1,2);
insert into #t2 values(1,null);
select * from #t1 where c2 not in(select c2 from #t2); -->执行结果:无
select * from #t1 where not exists(select 1 from #t2 where #t2.c2=#t1.c2) -->执行结果:1 3
3、in 与 = 的区别
select name from student where name in('zhang','wang','zhao');
select name from student where name='zhang' or name='wang' or name='zhao'
扫码加入技术交流群
推荐阅读:
【156期】面试官:谈谈 SimpleDateFormat 的线程安全问题与解决方案
【155期】面试官:你遇到过log4j2线程阻塞的场景吗,如何解决呢?
【154期】面试官:你能说说 Elasticsearch 查询数据的工作原理是什么吗?
微信扫描二维码,关注我的公众号
朕已阅