`
zhile005
  • 浏览: 52924 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ORACE exists

阅读更多
... where column in(select * from ... where ...);
... where exists (select 'X' from ...where ...);
       第二种格式要远比第一种格式的效率高。在Oracle中可以几乎将所有的IN操作符子查询改写为使用EXISTS的子查询
       使用EXIST,Oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间
       Oracle系统在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中
  • 大小: 18.1 KB
分享到:
评论
2 楼 zhile005 2011-03-16  
无论在哪种情况下,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');
1 楼 zhile005 2011-03-16  
在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的效率.
示例:
 低效:
SELECT * 
FROM EMP (基础表) 
WHERE EMPNO > 0 
AND DEPTNO IN (SELECT DEPTNO 
FROM DEPT 
WHERE LOC = ‘MELB') 


 高效:
SELECT * 
FROM EMP (基础表) 
WHERE EMPNO > 0 
AND EXISTS (SELECT ‘X' 
FROM DEPT 
WHERE DEPT.DEPTNO = EMP.DEPTNO 
AND LOC = ‘MELB') 

相关推荐

    orace性能优化高级培训

    orace性能优化

    stampgis连接orace数据库监听配置

    stampgis连接orace数据库监听配置

    Orace Essbase数据仓库函数大全

    Orace Essbase数据仓库函数大全,具有详细的函数说明和使用方法

    Orace与SQL常用函数对照文档

    ### Orace与SQL常用函数对照知识点详解 #### 一、ASCII 函数 - **功能**:返回与指定的字符相对应的十进制数值。 - **语法**:`ASCII(字符)` - **示例**: - `SELECT ASCII('A') A, ASCII('a') a, ASCII('0') zero...

    orace rac 功能测试

    Oracle RAC,全称为Real Application Clusters,是Oracle数据库的一项高级特性,用于构建高可用性和高性能的数据库集群。Oracle RAC允许多个服务器节点共享同一份物理数据库,从而提供连续的服务和负载均衡。...

    Orace数据导出文件版本兼容修改工具

    "Orace数据导出文件版本兼容修改工具"就是为了解决这一特定问题而设计的。 该工具的主要功能是调整DMP文件的内部结构,使其符合目标数据库版本的要求。在Oracle数据库系统中,DMP文件是由`expdp`(数据泵导出)命令...

    orace 导入导出数据库

    ### Oracle 数据库导入导出详解 #### 一、Oracle 导出(Export)操作 **1.... 在Oracle中,我们可以通过`exp`命令来进行数据库的导出工作。若要将一个名为`TEST`的数据库进行完全导出,可以使用以下命令: ...

    orace 财务操作手册

    ### Oracle EBS 财务模块操作手册关键知识点解析 #### 一、系统应用介绍 **1.1 系统配置和安装** - **配置 Hosts 文件:** - 在 Windows 目录下查找 `Hosts` 文件,通常位于 `C:\WINNT\system32\drivers\etc\...

    ORACE的学习笔记

    从给定的文件信息来看,这是一份关于Oracle数据库学习笔记的部分内容,主要聚焦于表的管理和基本的SQL操作。以下是对这些知识点的详细解析: ### 表的管理 在Oracle数据库中,表是存储数据的基本单位。...

    orace导入导出的操作

    在Oracle数据库管理中,数据导入导出是至关重要的操作,特别是在数据迁移、备份与恢复、系统复制等场景中。Oracle提供了多种工具来实现这一目的,其中最常用的是`expdp`(Export Data Pump)和`impdp`(Import Data ...

    orace性能优化高级培训.rar

    Oracle性能优化是数据库管理员和开发人员的关键技能,尤其是在大型企业级应用中。Oracle数据库系统以其高效、稳定和可扩展性而著称,但随着数据量的增长和复杂查询的增多,性能问题时常出现。本高级培训将深入探讨...

    ubuntu+python3+orace需要的包

    首先,我们需要理解标题和描述中的“ubuntu+python3+orace需要的包”指的是在Ubuntu操作系统中,使用Python3语言与Oracle数据库进行连接和数据操作所需的基础组件。以下三个文件是关键: 1. **instantclient-...

    Orace10g安装文档(32bit)

    ### Oracle 10g 在 32 位 Windows 系统下的安装步骤及注意事项 #### 一、前言 Oracle 10g 是一款广泛应用于企业和组织中的数据库管理系统,其强大的功能和稳定性使得它成为很多企业的首选。对于初次接触 Oracle 10...

    linuxas4安装orace9i

    ### Linux AS4上安装Oracle 9i的详细步骤与注意事项 #### 一、概述 本文档旨在详述在Red Hat Enterprise Linux AS4操作系统上安装Oracle 9i数据库的过程,包括必要的准备工作、补丁安装以及Oracle软件包的部署。...

    orace 学习 永久有效.txt

    根据提供的文件信息,我们可以推断出这份文档主要涉及Oracle数据库的学习资料。虽然具体的文档内容没有给出,但从标题、描述及部分展示的内容来看,这是一份关于Oracle基础知识的学习指南。接下来,我们将围绕Oracle...

    orace数据仓库

    Oracle数据仓库是一种高效的数据存储和分析系统,专为大规模数据管理和业务智能应用设计。它集成了数据集成、数据清洗、数据存储、数据管理和数据分析等功能,为企业提供了一个统一的平台来处理大量的历史数据,用于...

    Orace PPT 02

    Oracle是全球知名的数据库管理系统提供商,其产品广泛应用于各种规模的企业和组织中。PPT,即PowerPoint,通常用于创建和展示具有丰富图形、文本和多媒体元素的演示文稿。"Oracle PPT 02"可能是指一系列关于Oracle...

Global site tag (gtag.js) - Google Analytics