oracle中in和exists的区别
IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。
性能上的比较
比如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.
oracle中in和exists的区别的更多相关文章
- 【转】oracle中in和exists的区别
原文地址:http://blog.itpub.net/7478833/viewspace-441043/ 感谢作者 in 和 exists区别 in 是把外表和内表作hash join,而ex ...
- oracle中in与exists的区别
exists是用来判断是否存在的,当exists中的查询存在结果时则返回真,否则返回假.not exists则相反. exists做为where 条件时,是先对where 前的主查询询进行查询,然后用 ...
- 关于oracle中in和exists的区别
一般来说,这两个是用来做两张(或更多)表联合查询用的,in是把外表和内表作hash 连接,而exists 是对外表作loop 循环,假设有A.B两个表,使用时是这样的: 1.select * from ...
- ORACLE 中IN和EXISTS比较
ORACLE 中IN和EXISTS比较 EXISTS的执行流程 select * from t1 where exists ( select null from t2 where y = x ...
- oracle中函数和存储过程的区别和联系【转载竹沥半夏】
oracle中函数和存储过程的区别和联系[转载竹沥半夏] 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己 ...
- oracle中rownum和rowid的区别
rownum和rowid的区别总括: rownum和rowid都是伪列,但是两者的根本是不同的. rownum是根据sql查询出的结果给每行分配一个逻辑编号,所以你的sql不同也就会导致最终rownu ...
- Oracle中没有 if exists(...)
对于Oracle中没有 if exists(...) 的语法,目前有许多种解决方法,这里先分析常用的三种,推荐使用最后一种 第一种是最常用的,判断count(*)的值是否为零,如下declare v ...
- 面试被问之-----sql优化中in与exists的区别
曾经一次去面试,被问及in与exists的区别,记得当时是这么回答的:''in后面接子查询或者(xx,xx,xx,,,),exists后面需要一个true或者false的结果",当然这么说也 ...
- (转)MySQL中In与Exists的区别
背景:总结mysql相关的知识点. 如果A表有n条记录,那么exists查询就是将这n条记录逐条取出,然后判断n遍exists条件. select * from user where exists s ...
随机推荐
- C++ 智能指针六
/* 智能指针unique_ptr */ #include <iostream> #include <string> #include <memory> #incl ...
- H3C S5120-52P-WiNet交换机配置
配置console口登录验证密码 <H3C>system-view [H3C]user-interface aux 0 [H3C-ui-aux0]authentication-mode p ...
- Php实现版本比较接口
版本号格式: A.B.C, 字符串形式 <?php // 强更版本, 客户端版本 $f = '5.8.5'; $c = '5.8.4'; // 字符串分割并转换成整数数组 function Sp ...
- 二叉树转换成森林&森林变成二叉树
一,树转换成二叉树 1,将全部兄弟结点连起来; 2,保留第一个兄弟结点与父节点的连接,断开其它兄弟结点与父节点的连接,然后以根节点为轴依照顺时针方向旋转45度 watermark/2/text/aHR ...
- 什么是跨域访问,JSON&JSONP
http://blog.csdn.net/notechsolution/article/details/50394391 更详细的讲解,关于同源策略等: http://www.cnblogs.com/ ...
- android评分条RatingBar自定义设置
RatingBar为评分条控件,默认效果为若干个绿色的星星,如果想将其换成其他自定义图片就要自定义它的style.首先是布局文件: 其中android:numStars="5"设置 ...
- [Object Tracking] Overview of Object Tracking
From: 目标跟踪方法的发展概述 From: 目标跟踪领域进展报告 通用目标的跟踪 经典目标跟踪方法 2010 年以前,目标跟踪领域大部分采用一些经典的跟踪方法,比如 Meanshift.Parti ...
- python-docx 设置标题heading的中文字体类型+设置正文的中文字体类型
依赖包: from docx import Document from docx.shared import Pt from docx.shared import Inches from docx.o ...
- Tiobe最新编程语言排行
https://www.tiobe.com/tiobe-index/
- 欢迎访问新博客(pfzheng.tech)
这两天折腾了几天的服务器,搞了一个临时的个人博客. 最先入手的域名pfzheng.tech,但是发现竟然不支持备案.天哪,我做错了什么,只好再买域名.新域名pfzheng.cn正在备案中. 新博客基于 ...