永发信息网

SQL关于IN和EXISTS的区别?

答案:5  悬赏:10  手机版
解决时间 2021-02-09 03:11
SQL关于IN和EXISTS的区别?
最佳答案
in 是把外表和内表作hash 连接
exists是对外表作loop循环,每次loop循环再对内表进行查询。
那些认为exists比in效率高的人,是不准确的。
如果查询的两个表大小相当,那么用in和exists差别不大。
全部回答
MD001有空值
试试如下
select MC001 from BOMMC WHERe MC001 NOT EXISTS (SELECt MD001 FROM BOMMD AND MD001 IS NOT NULL)
in 的对象是值
exists 不返回值,只验证
IN
确定给定的值是否与子查询或列表中的值相匹配。
EXISTS
指定一个子查询,检测行的存在。
比较使用 EXISTS 和 IN 的查询
exists()后面的子查询被称做相关子查询 他是不返回列表的值的.只是返回一个ture或false的结果,其运行方式是先运行主查询一次 再去子查询里查询与其对应的结果 如果是ture则输出,反之则不输出.再根据主查询中的每一行去子查询里去查询.

in()后面的子查询 是返回结果集的,换句话说执行次序和exists()不一样.子查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表去.符合要求的输出,反之则不输出.
IN 其实与等于相似,比如in(1,2) 就是 = 1 or = 2的一种简单写法,所以一般在元素少的时候使用IN,如果多的话就用exists
exists的用法跟in不一样,一般都需要和子表进行关联,而且关联时,需要用索引,这样就可以加快速度。
你的SQL语句用NOT EXISTS可以写成
select MC001 from BOMMC WHERe NOT EXISTS (SELECt MD001 FROM BOMMD where BOMMC.MC001 = BOMMD.MD001)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
万杰激光美容中心怎么去啊,我要去那办事
布鲁格恩地址在哪,我要去那里办事
【turnout】turnouttobe和turnoutthat应该怎
玉石振动抛光机为什么抛不出光来请教一下
未婚男青年有性欲望怎么办
安静美肤地址在什么地方,想过去办事
刺客信条枭雄进伦敦特别的卡,咋回事
晋LSU是哪里的车牌
滨保高速公路/潘庄互通立交(路口)地址在什么
08年水灾哪个省最严重?
刚被淘宝卖家骚扰 怎么刷爆对方手机 有号码
一个虫一个勾读什么
唯美整形地址好找么,我有些事要过去
关于电场强度与电势的关系.下面各种说法中正
夏普复印机图形模式中的光栅和矢量的区别是什
推荐资讯
香香酸吧地址好找么,我有些事要过去
蔬菜、水果、肉类等放入冰箱之前要怎样处理?
宁波燎原户外灯具地址在哪,我要去那里办事
奥特曼格斗进化重生存档ps2格式
军阀小说
要做一个大学生消费调查问卷,秀赞怎么样?用
我想问下,你原来在新世界学日语。多少钱啊?
户籍怎么填写才规范
平安银行借记卡社区金融卡到底是一种什么样的
中国移动(彬志营业厅)地址在什么地方,想过去
甲乙丙丁四人共同购买一游艇
川妹子麻辣烫怎么去啊,有知道地址的么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?