sql中in和exists的区别效率问题 转

如题所述

回答你的问题是比较费神的

要分不同情况来看待in和exists的效率。
1、A表与B表是一对多的关系(不考虑索引的情况),使用exists语句在查询时效率明显高
2、A表与B表是一对一的时候(不考虑索引的情况),使用exists语句和In语句查询时效率一样高
3、A表与B表是多对多的关系(不考虑索引的情况),使用联接方式(inner join、left join、right join等)效率会更高一些,但不绝对,有时候还要看你想要检索的内容在表里的存放位置,分情况对待。在SQL中没有那个定式适用于所有查询。

若是非要给出这两个哪个更好一些,个人感觉exists会好一些
温馨提示:内容为网友见解,仅供参考
无其他回答

sql中in和exists的区别效率问题 转
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:例如:表A(小表),表B(大表)1:select * from A where cc in (select cc from B)效率低,用到了A表上cc...

sql中in和exists的区别效率问题 转
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。一直以来认为exists比in效率高的说法是不准确的。 如果查询的两个表大小相当,那么用in和exists差别不大。如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in ...

sql中in和exists的区别效率问题 转
要分不同情况来看待in和exists的效率。1、A表与B表是一对多的关系(不考虑索引的情况),使用exists语句在查询时效率明显高 2、A表与B表是一对一的时候(不考虑索引的情况),使用exists语句和In语句查询时效率一样高 3、A表与B表是多对多的关系(不考虑索引的情况),使用联接方式(inner join、l...

sql中in和exists的区别效率问题 转
不一样的条件是比不了的。IN 适合内小外大的查询 Exists 适合内大外小的查询 Select distinct deptName from Department where exists(select * from Employee where empGender=1)Select distinct deptName from Department where deptID in(select FDeptID from Employee where empGender=1)

SQL中IN和EXISTS用法的区别
SQL中IN和EXISTS用法的区别 搜索资料 我来答 分享 微信扫一扫 新浪微博 QQ空间 举报 浏览18 次 本地图片 图片链接 代码 提交回答 匿名 回答自动保存中为你推荐:特别推荐 老年人谣言传播力超年轻人6倍!Why? 中国经济下行真因为人口多吗? 为什么红酒后劲这么大? 为什么打哈欠传染,还会流泪?

sql exist和in的区别及查询效率比较
EXISTS与IN的使用效率的问题,通常情况下采用exists要比in效率高,因为IN不走索引。但要看实际情况具体使用:IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。4、关于EXISTS:EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False。EXISTS...

sql中in和exists的区别效率问题 转
EXISTS效率高,因为满足一个记录就退出,而IN要遍历所有记录。

SQL语句中“in”和“exist”有什么区别?
本文主要分析了in和exists的区别与执行效率的问题:in可以分为三类:1、形如select * from t1 where f1 in ( 'a ', 'b '),应该和以下两种比较效率。select * from t1 where f1= 'a ' or f1= 'b '或者 select * from t1 where f1 = &apos...

sql 中,exists 和 in 的区别?效率
exists效率快,因为会用到索引,并且是有数据就返回,而in会每个都运算,并且不会用到索引。用不用索引,是指使用的列有索引的情况。

在SQL查询中,为什么说EXIST的效率要比IN要高?
对于in 和 exists的区别: 如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in, 反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用exists。其实我们区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键),如果是exists,那么以外层表为驱动表,先被访问,...

相似回答