问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql查询语句in和exists二者的区别和性能影响

发布网友 发布时间:2022-04-23 23:54

我来回答

1个回答

热心网友 时间:2022-04-09 07:22

如说两张表一张是用户表TDefUser(userid,address,phone),一张是消费表TAccConsume(userid,time,amount),我要查消费超过5000的用户记录,那么可以写
select * from TDefUser where exists (select 1 from TAccConsume where TDefUser.userid=TAccConsume.userid and TAccConsume.amount> 5000)

也可以:
select * from TDefUser where userid in (select userid from TAccConsume where TAccConsume.amount> 5000)

exists()后面的子查询被称做相关子查询其运行方式是先运行主查询一次 再去子查询里查询与其对应的结果 如果是ture则输出,反之则不输出.再根据主查询中的每一行去子查询里去查询. in()后面的子查询 是返回结果集的,换句话说执行次序和exists()不一样.子查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表去.符合要求的输出,反之则不输出.
性能影响的话,这个是没有固定那一个好,要针对自身条件来使用。
一直以来认为exists比in效率高的说法是不准确的。如果查询的两个表大小相当,那么用in和exists差别不大。 如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in: 例如:表A(小表),表B(大表)
1:
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列的索引。
相反的
2:
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列的索引。
not in 和not exists如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快。in 与 =的区别
select name from student where name in ('zhang','wang','li','zhao');

select name from student where name='zhang' or name='li' or name='wang' or name='zhao'
的结果是相同的。
mysql查询语句in和exists二者的区别和性能影响

如果查询的两个表大小相当,那么用in和exists差别不大。如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:例如:表A(小表),表B(大表)1:select * from A where cc in (select cc from B) 效率低,用到了A表上cc列的索引;select * from A where exi...

mysql查询语句in和exists二者的区别和性能影响

性能影响的话,这个是没有固定那一个好,要针对自身条件来使用。一直以来认为exists比in效率高的说法是不准确的。如果查询的两个表大小相当,那么用in和exists差别不大。 如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in: 例如:表A(小表),表B(大表)1:sele...

mysql exists和in的区别

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

mysql中not in和not exists两种查询到底哪种快

in和exists不论是大数据表还是小数据表,有可利用的索引还是无可利用的索引的情况下,它们的运行效率是差不多的,exists也许会稍微高一点点,但是差别很小。not exists在有可被利用索引的情况下效率很高,但是在大数据表的情况下如果没有可被利用索引的情况下其运行效率很差。not in 则在大数据表的情况...

mysqlin一个条件和等于

in和=是没有区别,如果子查询有多条记录,用=会出错的,所以in是无论只查询有多少条记录都可以使用,而=只有当子查询只有1条记录的时候才能使用 in和exists理解上其实是差不多,但对数据库而言,in的执行顺序是先执行只查询条件,然后把记录和外查询核对,找符合条件的, 而exists是先执行外查询,...

mysql中not in怎么使用

not In 相当于 <> all,如果 Not In 后面跟的是子查询的话,子查询中只要包含一个 null 的返回值,则会造成整个 Not in 字句返回空值,结果就是查询不会返回任何结果。而 in 相当于 =any 的意思,可以有效处理子查询中返回空值的情况,返回正确的结果。mysql中not in和not exists两种查询到底哪种...

数据库(比如MYSQL) ,表连结查询与子查询哪个效率高些? 为什么

in子查询、exists子查询、连接,效率的探讨 以下是SQL的帮助 (高级查询优化概念)Microsoft® SQL Server™ 2000 使用内存中的排序和哈希联接技术执行排序、交集、联合、差分等操作。SQL Server 利用这种类型的查询计划支持垂直表分区,有时称其为分列存储。SQL Server 使用三种类型的联接操作:嵌...

mysql not in 效率

那你就吧not in改成not exists试试看,因为in是先执行子查询中的查询,然后再执行主查询,exists查询它是先执行主查询,即外层表的查询,然后再执行子查询,那么exists的效率应该高一些

mysql老是报already exits,怎么办

mysql中的in语句是把外表和内表作hash 连接,而exists语句是对外表作loop循环,每次loop循环再对内表进行查询。一直大家都认为exists比in语句的效率要高,这种说法其实是不准确的。这个是要区分环境的。

在SQLServer中为什么不建议使用NotIn子查询_MySQL

图2.Not In产生不准确的值在图2中,条件3不属于Not In后面列表的任意一个,该查询却不返回任何值,与预期的结果不同,那么具体原因就是Not In子句对于Null值的处理,在SQL Server中,图2中所示的Not In子句其实可以等价转换为如图3所示的查询。图3.对于Not In子句来说,可以进行等价转换在图3中...

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
高级项目管理师报考条件是什么 高级项目管理师报考条件 裱花蛋糕是什么意思 手机卡住了,按关机按不了怎么办呢? vivo手机卡住了屏幕不动也没法关机? 金山毒霸和360安全卫士哪个好用? 生咖啡:嗅觉和肉眼检验以及杂质和缺陷的测定内容简介 四川东柳醪糟有限责任公司公司产品与服务 有什么出名的特色酒酿? 给暗恋对象送什么花 食品添加剂包括什么? mysql:exists子查询案例及运行原理讲解 mysql中exists的用法 用 EXISTS查询上了CS-101和CS-190两门课的所有学... mysql exists与in 具体区别在哪里 mysql中的exists 求教mysql中if exists 的用法 mysql中exists语句使用后获得的结果怎么顺序乱了 MySQL的子查询中FROM和EXISTS子句的使用教程 MySQL EXISTS 怎么用呢? mysql exists 的使用 移动宽带突然断网,猫上面光信号一直闪烁红灯。这种情况应该怎么处理... 你好 一开启猫光信号一直闪红灯 一会就不闪了 上不去网怎么回事? 6至10级QQ号能买? 买的QQ号,0级无好友,有身份证,怎么保证不被找回? 购买QQ帐号如何才能不被找回? 我买一个QQ号(cf)那个QQ号买的时候没好友,没有任何绑定,QQ等级0级,现在所有绑定都是我的 在QQ号码站买的普通号级别都是0级吗?那等级靓号呢买的是多少级?升级规则和申请的帐号一样吗? 0级6位的QQ号现在多少钱,急! 我qq号是0级,新买的,号码已经绑定在我的手机上了, 可是我为了防止被他找回 所以在半个月内我需要 我想买个0级的9位qq号 买的0级无保普通QQ号码,这样的QQ安全不 MySQL数据库代码中,两个exists语句同时出现同一查询语句中时,怎么理解... mysql中exists子查询异常 mysql exists 语句问题 ppt如何让图片来回摇动 PPT中鼠标如何让图形移动? ppt 点击一图形出现动作 怎么设置??? ppt的背景如何设置动作? powerpoint中 怎样让 一副图片从左到右 不停动作 如何在一页PPT里做出多个动作? 怎么能使PPT中多幅图片同时动作呢 ppt中如何让一个图形一直动,飞来飞去,就像网页打开的时候会有一直飞动一个图标 运营与推广有什么区别?工作职责又是怎样的? 网推和运营有什么区别了? 运营和推广有什么不一样? 网络运营和推广的定义是什么? 运营和推广的区别? 运营和推广的职位哪个比较好? 大家知道运营和推广有什么区别吗? 淘宝运营和推广专员的区别 亢奋的拼音是什么