oracle用NOT EXISTS替代NOT IN
Oracle in not 替代 exists
2023-09-11 14:18:18 时间
在子查询中,NOT IN子句将执行一个内部的排序和合并. 无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历). 为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS.
例如:
SELECT …
FROM EMP
WHERE DEPT_NO NOT IN (SELECT DEPT_NO
FROM DEPT
WHERE DEPT_CAT=’A’);
为了提高效率.改写为:
(方法一: 高效)
SELECT ….
FROM EMP A,DEPT B
WHERE A.DEPT_NO = B.DEPT(+)
AND B.DEPT_NO IS NULL
AND B.DEPT_CAT(+) = ‘A’
(方法二: 最高效)
SELECT ….
FROM EMP E
WHERE NOT EXISTS (SELECT ‘X’
FROM DEPT D
WHERE D.DEPT_NO = E.DEPT_NO
AND DEPT_CAT = ‘A’);
相关文章
- Oracle数据库导出整个Oracle数据库和导入整个oracle数据库命令
- Oracle数据库:oracle数据表格dmp,sql,pde格式导入与导出,视图、序列、索引等对象的导出,oracle完结,后续开启mysql的学习
- Oracle数据库:oracle组函数,聚合函数,多行函数,avg,sum,min,max,count,group by,having
- Oracle数据库:条件表达式case when then else end,decode函数,oracle单行函数练习示例
- Oracle数据库:啥是oracle数据库?你为啥要学oracle?
- 【转】 oracle 层次查询判断叶子和根节点
- oracle数据库删除用户(schema)操作
- 在Centos安装oracle_11gR2进度68%"Error in invoking target mkldflags ntcontab.o nnfgt.o of makefile..”
- 【转】使用Navicat for Oracle新建表空间、用户及权限赋予
- oracle 用IN来替换OR
- oracle强制索引失效
- 手工安装XDB 组件in oracle 11g
- oracle 10g standby 设置
- 转 mysql oracle 指定rand随机数范围
- php pdo oracle
- 《Oracle高性能自动化运维》一一1.4 Linux内存体系与Oracle内存空间
- Oracle 数据库之最:你见过最高的 SQL Version 是多少?
- Oracle学习.Windows 命令行 启动ORACLE服务与实例
- [Oracle]In-Memory的Join Group 位于内存的何处?
- 【云和恩墨大讲堂】Oracle线上嘉年华第二讲
- oracle提高之索引学习
- Oracle创建自增字段方法-ORACLE SEQUENCE的简介
- 【翻译自mos文章】检查$ORACLE_HOME是否是RAC的HOME的方法以及relink RAC的Oracle binary的方法
- Oracle的层次查询(oracle树查询)
- oracle中 rownum 与 connect by的结合使用
- Oracle 基础系列之1.1 oracle的安装
- Oracle 查询表的字段注释