我是靠谱客的博主 狂野人生,最近开发中收集的这篇文章主要介绍EXISTS 和 IN 的区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

结论

1. in()适合B表比A表数据小的情况

2. exists()适合B表比A表数据大的情况

当A表数据与B表数据一样大时,in与exists效率差不多,可任选一个使用.

select * from A
where id in(select id from B)

 

1.exist,not exist一般都是与子查询一起使用. In可以与子查询一起使用,也可以直接in (a,b.....)。

2.exist会针对子查询的表使用索引. not exist会对主子查询都会使用索引. in与子查询一起使用的时候,只能针对主查询使用索引. not in则不会使用任何索引. 注意,一直以来认为exists比in效率高的说法是不准确的。

3.in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。
 

在SQL中,同样的查询很多情况下,既可以用in的用法来写,也可以用exists来写。in写法比exists的写法要容易读,好理解,但是当数据量大的时候,exists的效率要远高于in的写法。

最后

以上就是狂野人生为你收集整理的EXISTS 和 IN 的区别的全部内容,希望文章能够帮你解决EXISTS 和 IN 的区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部