`

数据库中in与exists的区别.txt

sql 
阅读更多

对于in与exists的区别:

    in适合于外表大而内表小的情况;exists适合于外表小而内表大的情况。

    如果子查询得出的结果集记录较少,主查询的表较大且又有索引时应用in,反之如果外层的主查询记录较少,子查询中的表大,

又有索引时使用exists。

    其实我们区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键)。如果是exists,那么以外层的表为驱动表,先

被访问,如果是in,那么先执行子查询,所以我们会以驱动表的快速返回为目标,那么就会考虑到索引及结果集的关系了。

    另外in时不对null进行处理,如:select 1 from dual where null in(0,1,2,null)返回为空。

 

对于not in和 not exists的区别:

    not in 在执行时,为了证明存在性,必须遍历整个表单,从第一个数据到最后一个;而 not exists 在执行时,只要出现第一

个数据,就不会再执行子查询。

    所以效率上,not exists比 not in高效的多。

    not in 只有当子查询中,select关键字后的字段有not null约束或者有这种暗示时用not in。另外如果主查询中表大,子查询

中表小但是记录多,则应当使用not in。如果主查询表中记录少,子查询表中记录多,并有索引,可以使用not exists,另外not in

最好用 外连接 + is null。

   尽量不要使用not in(它会调用子查询),而尽量使用not exists(它会调用关联子查询)。

如果子查询中返回的任意一条记录含有空值,则查询将不返回任何记录。    

分享到:
评论

相关推荐

    mysql数据库In的优化.txt

    ### MySQL数据库In子句优化详解 #### 一、引言 在MySQL数据库的实际应用中,`IN`子句被广泛用于处理多个值的情况。当涉及到大量数据时,如何有效地使用`IN`子句成为了提高查询性能的关键。本文将详细介绍如何针对`...

    40集SQL Server 基础入门视频教程 SQL Server 数据库基础入门必备课程.txt

    5.SQL Server 2014数据库修改与删除.mp4 6.SQL Server 2014数据库备份与还原.mp4 7.SQL Server 2014数据类型.mp4 8.SQL Server 2014新建表.mp4 9.SQL Server 2014修改、删除表结构.mp4 PPT SQL Server 2014...

    网摘的部分数据库题目.txt

    例如,使用`NOT IN`或`NOT EXISTS`子句时,如果子查询中包含NULL值,则可能会导致意外的结果。这是因为NULL在比较运算中被视为未知值,不会被任何值匹配。 正确的处理方式通常是在查询中加入对NULL值的处理,比如...

    pubs数据库源代码.txt

    根据提供的文件信息,我们可以深入分析并提取出有关 pubs 数据库的知识点。此数据库源代码针对的是 SQL Server 2005 系统,并且包含了创建整个 pubs 数据库所需的全部 SQL 脚本。 ### 一、版权信息与脚本执行环境...

    C#读取txt文件并导入数据库

    本篇文章将详细探讨如何使用C#读取TXT文件并将其数据导入到数据库中。 首先,我们需要了解C#中读取TXT文件的基本步骤。在C#中,我们可以使用`System.IO`命名空间下的`StreamReader`类来实现这一功能。以下是一个...

    成语库 chengyu.txt

    根据给定的信息,“成语库 chengyu.txt”似乎是一个包含大量文字内容的文件,但从提供的部分内容来看,并没有明确展示出具体的成语或者与成语相关的描述。然而,基于标题和描述,我们可以推断该文件是一个用于软件...

    mysql高级视频教程百度云(2019).txt

    47.MySQL高级_in和exists.avi 46.MySQL高级_小表驱动大表.avi 45.MySQL高级_索引优化答疑补充和总结口诀.avi 44.MySQL高级_索引面试题分析.avi 43.MySQL高级_索引优化10.avi 42.MySQL高级_索引优化9.avi ...

    数据库实验(sql server):高级SQL查询(分组、统计、嵌套、组合查询【附SQL源码.TXT】)

    ### 数据库实验(SQL Server):高级SQL查询详解 #### 分组查询(GROUP BY) 分组查询是SQL中一种非常重要的技术,它可以帮助我们按指定的列将数据进行分类汇总,进而实现各种复杂的统计需求。在给定的例子中,...

    ASP.NET实现的读取txt,excle内容到数据库

    在ASP.NET中,读取txt和Excel文件的内容并将其存储到数据库是一项常见的任务,尤其在数据导入、数据分析或系统集成的场景下。本教程将详细讲解如何实现这一过程。 首先,我们需要了解ASP.NET的基本概念。ASP.NET是...

    Python实现读取TXT文件数据并存进内置数据库SQLite3的方法

    本文将详细介绍如何使用Python读取TXT文件中的数据,并将其存储到SQLite3数据库中,同时也会涉及数据库的基本操作,如创建表、插入数据以及查询数据。 首先,我们需要导入`sqlite3`模块,这是Python标准库的一部分...

    高效率常用的OracleSQL语句.txt

    WHERE子句与HAVING子句的区别 #### 知识点: - `HAVING`子句用于过滤分组后的结果集,而`WHERE`子句则用于过滤原始数据集。 - 如果需要基于聚合函数的结果来筛选数据,则必须使用`HAVING`子句。 #### 示例: ```...

    向数据库中导入数据的几种方法

    数据库是存储和管理信息的重要工具,对于数据的导入操作,有多种方法可以帮助我们高效地将大量数据输入到数据库中。以下是一些常见的数据库导入数据的方法: 1. **SQL INSERT语句**: 最基础的方式是使用SQL的...

    连接MySQL数据库.rar

    在给定的压缩包文件“连接MySQL数据库.rar”中,包含了一系列与这个主题相关的Python脚本和文档,如`delete_data.py`, `pymysql官网.txt`, `函数方式参数化连接.py`, `insert_data.py`, `__init__.py`, `update_data...

    创建MySQL数据库.pdf

    LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE 表名; ``` 10. 导入.sql 文件命令: ``` USE 数据库名; SOURCE d:/mysql.sql; ``` 11. 命令行修改 root 密码: ``` UPDATE mysql.user SET password=PASSWORD('新...

    Oracle高效SQL语句原则.txt

    在Oracle数据库管理与优化的过程中,高效的SQL语句编写是非常重要的一个环节。本文将根据提供的信息“Oracle高效SQL语句原则”进行深入解析,并结合具体的实践经验和理论知识来阐述如何编写出更加高效、性能更佳的...

    sql 查询慢的48个原因分析.txt

    避免使用已弃用的SQL语法,如ISNULL、NOT EXISTS、NOT IN等,转而使用现代且更高效的替代方案。 这些只是导致SQL查询速度减慢的部分原因及其解决策略,实际问题可能更加复杂,需要根据具体情况进行综合分析和优化。...

    文件写入数据库

    在IT行业中,数据库操作是一项基础且重要的技能,特别是在数据存储、数据分析和应用开发等领域。本教程将引导新手学习如何将文件中的内容写入数据库。在这个过程中,我们将涉及到几个关键概念和技术,包括文件读取、...

    精妙SQL语句介绍.txt

    精妙SQL语句是数据库操作中的精华,它们能够高效、精准地实现数据的查询、更新、插入和删除等操作。以下是从给定的文件信息中提取出的关键SQL知识点,涵盖了一些高级技巧和实用示例。 ### 1. 复制表结构 在描述中...

    sql测试题.txt

    根据提供的文件信息,我们可以归纳出一系列与SQL查询相关的知识点,主要围绕特定的数据库表结构以及对这些表进行的各种复杂查询操作。以下是对这些知识点的详细解释: ### SQL表结构介绍 1. **S (Students)**:...

    手工注入通用语句总结偏.txt

    攻击者通过构造包含`UNION SELECT`的SQL语句,可以获取数据库中的其他表数据,例如这里的`username`和`password`等敏感信息。 #### (2) 使用注释符绕过检测 ```sql 'and'1'='1'and'1'='2 'and1=1and''=''and1=2and'...

Global site tag (gtag.js) - Google Analytics