OT IN:
select *
from rateparam1.Work_Order_Def a
where workorder_id not in
(select b.workorder_id from rateparam1.work_order_process_log b);
OUTER JOINS:
select * from rateparam1.Work_Order_Def a,rateparam1.work_order_process_log b
where a.workorder_id = b.workorder_id(+)
and b.workorder_id is null;
NOT EXISTS:
select *
from rateparam1.Work_Order_Def a
where not exists (select *
from rateparam1.work_order_process_log b
where a.workorder_id = b.workorder_id)
A表大于B表,查找A>B的部分(A中存在,B中不存在)。
select * from A
where not exists (select * from B
where A.** = B.**
and ...)---B表=A表的部分
NOT IN < OUTER JOIN < NOT EXISTS
在子查询中,NOT IN子句将执行一个内部的排序和合并. 无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历). 为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS
如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。
通过使用EXIST,Oracle系
统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间。Oracle系统在执行IN子查询时,首先执行子查询,并将获得的结果列表
存放在在一个加了索引的临时表中。在执行子查询之前,系统先将主查询挂起,待子查询执行完毕,存放在临时表中以后再执行主查询。这也就是使用EXISTS
比使用IN通常查询速度快的原因。
同时应尽可能使用NOT EXISTS来代替NOT IN,尽管二者都使用了NOT(不能使用索引而降低速度),NOT EXISTS要比NOT IN查询效率更高。
用EXISTS替代IN、用NOT EXISTS替代NOT IN:
在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下,
使用EXISTS(或NOT EXISTS)通常将提高查询的效率. 在子查询中,
NOT IN子句将执行一个内部的排序和合并. 无论在哪种情况下,
NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历).
为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS.
例子:
(高效)SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND EXISTS (SELECT ‘X’
FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ‘MELB’)
(低效)SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC = ‘MELB’)
外大内小用in ,外小内大用exists
select count(*)
from A a
where a.tradedate = '20090202'
and a.no in
(select b.no from B b)
如果A表数据量大 而B表数据量小
这样直接过滤了很多数据 不用遍历整张表大表啊
过滤后数据量小了,那么运算次数也少了
select count(*)本来就不会花费很多时间啊,
因为只返回一个记录
但select *
会花费很多时间
那exists效率也会很高,因为exists只返回TRUE或者FALSE
分享到:
相关推荐
We live in on-demand, on-command Digital universe with data prolifering by Institutions, Individuals and Machines at a very high rate. This data is categories as "Big Data" due to its sheer Volume, ...
为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS。 如 我要查询 Sendorder表中的冗余数据(没有和reg_person或worksite相连的数据) sql=”select Sendorder.id,Sendorder.reads,Send...
SP-6958 : Preserve whitespace between alias and table name in qualified joins. SP-6963 : No longer flags an ST007 issue if the reused cursor name has been previously deallocated. See the full release ...
SQL Joins Visualizer帮助您使用维恩图在两个表之间构建SQL JOIN。 发展历程 。 Web应用程序基于构建。 要以开发模式启动它,需要安装ruby并在终端中运行: $ bundle # get all deps $ middleman server # start ...
不要为在Slack中寻求帮助而害羞。 :red_exclamation_mark: :red_exclamation_mark: :red_exclamation_mark: 注意 :red_exclamation_mark: :red_exclamation_mark: :red_exclamation_mark: -有些人开始任性分配...
流连接 有序 objectMode 流的连接操作(例如时间序列数据)。 将两个时间序列流连接成单个流的各种类型的连接操作。... gen ( { start : 0 , until : 5000 , interval : 1000 , key : "L" } ) , gen ( { start : 500
这将为您创建并填充数据库,并使用nodemon启动服务器。 从...开始: 作为用户,我希望看到一个子宫列表,以便我知道谁该要求清理温布尔登公共事务。 作为用户,我想访问显示其特征的单个子宫的view路线,以便能在...
lodash-joins 内容 左反连接 左外连接 左半连接 未来 关于 一个提供JavaScript数组连接算法的库。 LoDash是唯一的依赖项,并且此库将自身附加为该库的扩展。 Lodash已经支持一些类似于SQL的标准功能: _.pluck ...
scalacheck-and-joins scalacheck和关系联接的探索
Publisher: Jones and Bartlett Publishers, Inc.; 1 edition (December 8, 2009) Language: English ISBN-10: 076378138X ISBN-13: 978-0763781385 Chapter 1—Starting Microsoft® SQL Server® 2008 1 ...
JOINS:使用PHP-CRUD-API更好的API映射,没有更多的joinx,请参见讨论 安装 通过npm: npm我js-crud-api import jscrudapi from 'js-crud-api' ; const jca = jscrudapi ( 'urlToApi.php' ) ; jca . read ( 'aTable...
parse方法的结果将包含以下字段: referencedTables :查询中使用的表的列表createdTables :在查询中创建的表的列表sourceTables :源自子查询和联接的表的列表operation :查询中定义的操作-当前仅支持select和...
SQL::Abstract::Complete - 从 Perl 数据结构生成完整的 SQL 这个模块的灵感来自优秀的 SQL::Abstract,in 继承了它。 然而,在尝试使用该模块时,我发现我真正想做的是生成完整的 SELECT 语句,包括 joins 和 group...
作者:Lynn.Beighley. ...10 Outer Joins, Self Joins, and Unions: New maneuvers 417 11 Constraints, Views, and Transactions: Too many cooks spoil the database 455 12 Security: Protecting your assets 493
440 pages Publisher: Packt Publishing (September 21, 2010) Language: English ISBN-10: 1849510180 ISBN-13: 978-1849510189 ...Save time and processing resources by scripting JOINs and subqueries
使用无浏览器( )上的bigbluebot( )在mconf-live / bigbluebutton实例中运行自动化测试。 设置 在bot.env ,设置: BIGBLUEBOT_HOST=SERVER_URL BIGBLUEBOT_SECRET=SERVER_SECRET 跑步 docker-compose build ...
Multi-Core, Main-Memory Joins: Sort vs. Hash RevisitedCagri Balkesen, Gustavo Alonso Systems Group, ETH ZurichSwitzerland {name.surname}@inf.ethz.chJens Teubner TU Dortmund UniversityGermany jens....
is everything an SAP user needs to know to create your own reports in SAP using Query tools, no programming required! Designed as a hands-on learning aid, you will be able to follow along and perform ...
SDSS计算研究Python作业 分配#002b带有字符串的...answer = word1 + " " + word2 # this one joins the 2 words together, but also adds a space in the middle joined = "hello" + "world" # this can also be used
选择数据表单表( Joins , Limits , OrderBy , Wheres debug )。 删除表中的记录。 计数表中的记录。 引用字符串。 提供关闭数据库连接的方法 简单的例子 <?php //loading require file. require_once '...