`

exist与in的区别

 
阅读更多

对于in 和 exists的性能区别: 如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in,反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用exists。 其实我们区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键),如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询,所以我们会以驱动表的快速返回为目标,那么就会考虑到索引及结果集的关系了

另外IN是不对NULL进行处理

如: select 1 from dual where null in (0,1,2,null)
为空

EXISTS的执行流程 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

分享到:
评论

相关推荐

    IN 和 EXIST的区别

    标题和描述均聚焦于SQL语言中“IN”和“EXISTS”的区别,这是数据库查询语言中两种常用的子查询处理方式,它们在功能上虽然相似,但在执行效率、索引使用以及适用场景上存在显著差异。 ### IN关键字 “IN”主要...

    in exist not_in

    IN、EXISTS、NOT EXISTS、NOT IN 在 SQL 语句中的应用和区别 IN 语句和 EXISTS 语句都是 SQL 语句中用来判断是否存在某个值的语句,但是它们的实现机制和应用场景是不同的。 IN 语句是通过 hash 连接来实现的,它...

    Some projects cannot be imported because they already exist in the workspace

    在使用Eclipse或MyEclipse等集成开发环境(IDE)时,可能会遇到“Some projects cannot be imported because they already exist in the workspace”的问题。这个错误提示表明,你试图导入的项目与当前工作空间...

    SQL中对not in和not exist查询的替代算法.pdf

    "SQL中对not in和not exist查询的替代算法.pdf" 本文主要讨论了SQL中对not in和not exist查询的替代算法。首先,作者简要介绍了SQL语言的基本概念和特点,然后讨论了not in和not exist查询的低效性及其原因。接着,...

    FILE_DOES_NOT_EXIST

    在 Windows 操作系统中,`FILE_DOES_NOT_EXIST` 是一个错误代码,通常表示尝试访问的文件不存在于指定的位置。该错误代码在内核模式下通过 `NTSTATUS` 类型来表示,具体的值定义为 `0x00000005`。当应用程序或驱动...

    经典SQL查询总结关于Exists,not Exists.in ,not in效率的说明。

    - **WHERE** 与 **HAVING** 子句的区别 - `WHERE` 子句用于筛选数据,在对数据进行聚合前应用。 - `HAVING` 子句则是在聚合操作之后对结果进行筛选。 - **分组** (`GROUP BY`) 与聚合函数的使用 - 使用 `GROUP BY...

    iptables删除命令中的相关问题.doc

    最近在做一个V*P*N中间件的配置工作,在配置...iptables: Bad rule (does a matching rule exist in that chain?)。我就纳闷了,怎么会出现这个问题,按照官方的文档也有错?以下是我针对iptables删除命令的解决办法。

    Not-exist-in-douban:豆瓣不存在的书影音

    1. **获取项目**:首先,你需要下载或克隆`Not-exist-in-douban-master`压缩包,这通常通过Git工具完成。如果你不熟悉Git,也可以直接下载ZIP文件。 2. **理解项目结构**:解压后,你会看到一个包含`index.md`文件...

    Serv_U 安全设置以后出现530 Not logged in, home directory does not exist的解决方法

    一般情况都是因为文件的上级目录不存在浏览权限。...详细说明:Serv_U安装设置以及530 Not logged in, home directory does not exist解决方法安装程序尽量采用最新版本,避免采用默认安装目录,设置好serv-u

    Oracle In和exists not in和not exists的比较分析

    in和exist的区别 从sql编程角度来说,in直观,exists不直观多一个select, in可以用于各种子查询,而exists好像只用于关联子查询 从性能上来看 exists是用loop的方式,循环的次数影响大,外表要记录数少,内表就...

    “exists”和“in”的效率问题

    ### "Exists"与"In"的效率问题详解 #### 引言 在数据库查询语言SQL中,“Exists”与“In”是两种常用的子查询方法,它们在实际应用中各有优势与局限。本文将深入探讨这两种方法的工作原理、应用场景以及性能差异,...

    MySQL exists 和in 详解及区别

    MySQL中的`EXISTS`和`IN`都是在SQL查询中用来检查某条记录是否符合特定条件的子查询操作符,但它们的工作原理和使用场景有所不同。 `EXISTS`子查询主要检查子查询是否能返回至少一行数据。在这个过程中,子查询的...

    简述Oracle中in和exists的不同

    一直以来,大家认为exists比in速度快,其实是不准确的。且看接下来的具体分析:in其实是将外表和内表进行hash join,exists是先对外表进行loop操作,然后每次loop后再对内表进行查询。 如果两张表大小差不多,那么...

    Getting the number of columns in report view获得列表视图的列

    "Getting the number of columns in report view"这个主题是关于如何获取列表视图中的列数,这对于界面设计、数据分析以及用户交互优化具有重要意义。下面我们将深入探讨这一话题。 首先,我们需要理解列表视图...

    NOT EXISTS ⇔ NOT IN ⇒ NOT NULL 问题 结果不一样 疑问 如果等效

    当与 `NOT EXISTS` 或 `NOT IN` 结合使用时,它可以进一步细化查询结果,以排除 `NULL` 值的影响。 #### 示例代码 ```sql SELECT * FROM A1 WHERE smi_cd IS NOT NULL AND NOT EXISTS ( SELECT 'X' FROM aa ...

    关于Unity3D使用串口的设置

    Assets/Scripts/SerialPortReciever.cs(7,17): error CS0234: The type or namespace name `Ports' does not exist in the namespace `System.IO'. Are you missing an assembly reference? 这个错误的原因是 Unity...

    sql语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句

    SQL语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句 SQL语句优化是数据库性能优化的重要方面之一。在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接。在这种情况下,使用EXISTS...

    原理图网络表 Symbol for device not found in PSMPAT

    Allegro中导入orCAD原理图网络表时,出现以下错误: “Symbol 'BP' for device 'BEEP_BP_BEEP' not found in PSMPATH or must be "dbdoctor"ed”

Global site tag (gtag.js) - Google Analytics