oracle中exists和in的比较
exists 是Oracle sql中的一个函数。表示是否存在符合某种条件的记录。如
select * from A,B
where A.id=B.id
and exists (SELECT *
FROM A
WHERE A.type LIKE 'S%')
它和Oracle的另外一个函数IN很相似,你可以比较一下他们的用法,见下:
1 性能上的比较比如Select * from T1 where x in ( select y from T2 )
执行的过程相当于:
select *
from t1, ( select distinct y from t2 ) t2
where t1.x = t2.y;
即分别先查寻两个表,对做联合查询(本质联合查询)
相对的
select * from t1 where exists ( select null from t2 where y = x )
执行的过程相当于:
for x in ( select * from t1 )
loop
if ( exists ( select null from t2 where y = x.x )
then
OUTPUT THE RECORD
end if
end loop
表 T1 不可避免的要被完全扫描一遍
即循环外表,在逐个比较内表
分别适用在什么情况?
以子查询 ( select y from T2 )为考虑方向
如果子查询的结果集很大需要消耗很多时间,但是T1比较小执行( select null from t2 where y = x.x )非常快,那么exists就比较适合用在这里
相对应得子查询的结果集比较小的时候就应该使用in.
以后要注意凡是这样的比较问题,一般答案都不是绝对的,要分情况
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
---转载自http://blog.csdn.net/hakunamatata2008/article/details/4239831
oracle中exists和in的比较相关推荐
- oracle中exists和not exists用法(包含经典例题:查看学了所有课程的同学的信息的通俗易懂解释)
1.基本概念: select * from A where not exists(select * from B where A.id = B.id); select * from A where e ...
- oracle中exists连接两个表,IN、EXISTS、多表连接,哪个速度更快
本帖最后由 ghsau 于 2011-10-11 23:39 编辑 请看下面三个执行计划(Oracle10g) 1. 用IN SQL> select ename from emp e wher ...
- oracle中exists ,not exists用法
sql: SELECT c.CustomerId,CompanyName FROM Customers c WHERE EXISTS(SELECT OrderID FROM Orders o WHER ...
- Oracle中exists与in的效率探讨
in 与 exist 的语法比较: select × from 数据表 t where t.x in (...) 括号内可以是符合t.x字段类型的值集合,如('1',' ...
- ORACLE中exists与in的区别
--exists支持字段为空 select * from t_flight_info a where not exists (select * from M_CITY_PAIR where a.ade ...
- oracle中的exists 和 not exists 用法详解
from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...
- Oracle中的 IN, NOT IN和 EXISTS, NOT EXISTS的區別
Oracle中的 IN, NOT IN和 EXISTS, NOT EXISTS的區別 通常聽到的都是說盡量用exists不要用in,因為exists只判斷存在而in需要對比值,所以exists比較快, ...
- oracle中exist什么意思,oracle中not exists 是什么意思 , oracle数据库中exists的作用
导航:网站首页 > oracle中not exists 是什么意思 , oracle数据库中exists的作用 oracle中not exists 是什么意思 , oracle数据库中exist ...
- 1.oracle中的exists 和not exists 用法:
1.oracle中的exists 和not exists 用法: exists (sql 返回结果集为真) not exists (sql 不返回结果集为真) 如下: 表A ID NAME 1 A1 ...
- Oracle中merge into的使用
http://blog.csdn.net/yuzhic/article/details/1896878 http://blog.csdn.net/macle2010/article/details/5 ...
最新文章
- dataframe for 循环 数据格式 python_Python中的for循环
- PMCAFF微课堂(已结束) | 典典养车新媒体负责人亲授:如何运营百万级企业服务号
- 人工智能 | 自动驾驶与人工智能前沿研究报告(概念篇)
- ubuntu14.04设置静态IP
- [css] 说说position的absolute和fixed共同与不同点分别是什么?
- leetcode - 226. 翻转二叉树
- java递归查询无限极分类_sqlserver实现树形结构递归查询(无限极分类)的方法
- 直播卖货到底是不是卖人设?
- python数据类型:序列(字符串,元组,列表,字典)
- ORACLE数据库的模式对象的管理与维护
- 在不受支持的 Mac 上安装 macOS Ventura、Monterey、Big Sur (OpenCore Legacy Patcher)
- 重磅,12306抢票小助手开源了!
- Unity 打包APK 适配全面屏、刘海屏、水滴屏、挖孔屏
- 新版标准日本语高级_第19课
- python四种抽样方法的使用:随机抽样、聚类抽样、系统抽样、分层抽样
- 如何从ip服务器所用系统,如何从0开始打造一个深度学习服务器?
- android双清步骤,安卓刷机前双清如何操作?华为荣耀3C双清的过程
- SmartBi各类图形及其echarts的js代码
- hp服务器系统管理软件,惠普raid管理软件
- 科学计算机bug,EMUI小助手:计算器百分比计算出bug?真相在这儿!
热门文章
- 第一章计算机基础知识作业答案,计算机基础作业题1答案
- 乡村少年宫计算机室活动方案,社区乡村农村少年宫活动方案少儿培训开展情况...
- aix linux tcp连接数,修改windows、linux、aix等系统TCP/IP 参数
- activiti工作流 php,码云社 | 砺锋科技-SpringBoot整合Activiti工作流(附源码) - 用代码改变世界...
- aggregate()函数--R语言
- centos7安装RabbitMQ详细过程
- 推荐一个ajax控件项目 ajax data control
- Zabbix中文使用手册
- 修炼Python基础篇-字典(Dictionary)学习
- IE10、IE11 ASP.Net 网站无法写入Cookie 问题