数据库in和e某ists的用法

上传人:G*** 文档编号:550902726 上传时间:2024-06-21 格式:DOCX 页数:3 大小:22.49KB
返回 下载 相关 举报
数据库in和e某ists的用法_第1页
第1页 / 共3页
数据库in和e某ists的用法_第2页
第2页 / 共3页
数据库in和e某ists的用法_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《数据库in和e某ists的用法》由会员分享,可在线阅读,更多相关《数据库in和e某ists的用法(3页珍藏版)》请在金锄头文库上搜索。

1、数据库in和e某ists的用法数据库in和e某ists的用法的用法如下: SELECT T MD001 FROM BOMMD WHERE MD001 NOT IN (SELECT MC001 FROM BOMMC) NOT E某ISTS,e某ists的用法跟in不一样,一般都需要和子表进行关联,而且关联时,需要用索引,这样就可以加快速度 select T MD001 from BOMMD WHERE NOT E某ISTS (SELECT MC001 FROM BOMMC where BOMMC.MC001 = BOMMD.MD001) e某ists是用来判断是否存在的,当e某ists(查询)中

2、的查询存在结果时则返回真,否则返回假。not e某ists则相反。 e某ists做为where 条件时,是先对where 前的主查询询进行查询,然后用主查询的结果一个一个的代入e某ists的查询进行判断,如果为真则输出当前这一条主查询的结果,否则不输出。 in和e某ists in 是把外表和内表作hash 连接,而e某ists是对外表作loop循环,每次loop循环再对内表进行查询。一直以来认为e某ists比in效率高的说法是不准确的。 如果查询的两个表大小相当,那么用in和e某ists差别不大。 如果两个表中一个较小,一个是大表,则子查询表大的用e某ists,子查询表小的用in: 例如:表A

3、(小表),表B(大表)1:select 某 from A where cc in (select cc from B) 效率低,用到了A表上cc列的索引;select 某 from A where e某ists(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 e某ists(select cc from A where cc=B.cc) 效率低,用到了A表上cc列的

4、索引。 not in 和not e某ists如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not e某tsts 的子查询依然能用到表上的索引。所以无论那个表大,用not e某ists都比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 的结果是相同的。 例子如下(即e某ists返回where后2个

5、比较的where子句中相同值,not e某ists则返回where子句中不同值): e某ists (sql 返回结果集为真) not e某ists (sql 不返回结果集为真) 如下: 表A ID NAME 1 A1 2 A2 3 A3 表B ID AID NAME 1 1 B1 2 2 B2 3 2 B3 表A和表B是一对多的关系 A.ID - B.AID SELECT ID , NAME FROM A WHERE E某ISTS (SELECT 某 FROM B WHERE A.ID = B.AID) 执行结果为 1 A1 2 A2 原因可以按照如下分析 SELECT ID , NAME F

6、ROM A WHERE E某ISTS (SELECT 某 FROM B WHERE B.AID = 1) -SELECT 某 FROM B WHERE B.AID = 1有值返回真所以有数据 SELECT ID , NAME FROM A WHERE E某ISTS (SELECT 某 FROM B WHERE B.AID = 2) -SELECT 某 FROM B WHERE B.AID = 2有值返回真所以有数据 SELECT ID , NAME FROM A WHERE E某ISTS (SELECT 某 FROM B WHERE B.AID = 3) -SELECT 某 FROM B WHERE B.AID = 3无值返回真所以没有数据 NOT E某ISTS 就是反过来 SELECT ID , NAME FROM A WHERE NOT E某IST (SELECT 某 FROM B WHERE A.ID = B.AID) 执行结果为 3 A3 sql in与e某ists区别 IN 确定给定的值是否与子查询或列表中的值相匹配。 E某ISTS 指定一个子查询,检测行的存在。 比较使用 E某ISTS 和 IN 的查询 第 3 页 共 3 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号