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

oracle 中 IN 和EXISTS 的用法

 
阅读更多

有2张表,结构如下:

 

家长表 genearch:

 

gid varchar2(4) primary key,
gname varchar2(10)
 

 

学生表 student:

 

stuid varchar2(4) primary key,
sname varchar2(10) not null,
gid varchar2(4)
 

 

其中,student表中的字段gid是表genearch的外键.

 

现在有个小需求,student表中有些学生是没有家长的,要求查出student表中没有家长的学生信息.

 

以下是2个sql:

 

1. 使用IN查询

 

 

SELECT S.STUID, S.SNAME
  FROM STUDENT S
 WHERE S.GID IN (SELECT gid FROM GENEARCH);
 

 

 

 2. 使用exists查询

 

 

SELECT S.STUID, S.SNAME
  FROM STUDENT S
 WHERE EXISTS (SELECT gid FROM GENEARCH WHERE s.gid=gid);
 

建议使用exists查询,因为exists查询效率比IN查询要高,原因请参阅:

 

http://blog.csdn.net/lick4050312/article/details/4476333

 

 

 

分享到:
评论

相关推荐

    oracle数据库关于exists使用

    #### 一、Exists 的使用方法 在Oracle数据库中,`EXISTS` 是一种常用的子查询操作符,用于判断子查询是否有结果返回。如果子查询至少返回一行数据,则 `EXISTS` 表达式的结果为真;反之,则为假。 **1.1 Exists 的...

    in和exists的区别

    在Oracle数据库中,"IN"和"EXISTS"都是用于查询某个集合的元素是否存在于另一个集合中的关键字。然而,它们在处理数据时的效率和适用场景有所不同,这主要取决于涉及的数据量以及表之间的关联。 首先,让我们来看看...

    sql in,exists,not in,not exists区别

    IN、EXISTS、NOT IN、NOT EXISTS 是 SQL 中四种常用的条件判断运算符,它们之间的区别主要体现在使用场景、执行效率和语法结构上。 IN IN 是一种条件判断运算符,用于判断某个值是否存在于一个列表中。其基本语法...

    in和exists性能解析

    在数据库查询语言中,`IN` 和 `EXISTS` 子句是两种常见的用于关联两个表的方法,它们各自有其独特的性能特点和适用场景。本文将深入解析Oracle中`IN`与`EXISTS`的性能差异,以及如何根据具体需求选择最合适的查询...

    Oracle: minus | in | exists

    在Oracle数据库中,`MINUS`、`IN` 和 `EXISTS` 是三种不同的SQL查询操作符,它们各自用于特定的数据处理场景。了解并熟练掌握这些操作符对于优化查询性能和编写复杂的SQL语句至关重要。 1. **MINUS 操作符** `MINUS...

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

    在数据库查询语言SQL中,“Exists”与“In”是两种常用的子查询方法,它们在实际应用中各有优势与局限。本文将深入探讨这两种方法的工作原理、应用场景以及性能差异,帮助读者更好地理解和选择合适的查询方式。 ###...

    oracle中not exists对外层查询的影响详解

    在Oracle数据库中,`NOT EXISTS` 子句常用于查询中,以排除某些特定条件的记录。然而,它对查询性能的影响可能并不总是直观的,尤其是在涉及到外层查询时。本文将深入探讨`NOT EXISTS`如何影响外层查询,并通过示例...

    SQL中in参数化的用法

    最后一个解决方案是将 in 字句的内容放入到一个新表中,然后使用 join 或者 exists 连接该表来实现参数化查询。 我们可以使用参数化查询来实现 where in 和 like 的参数化查询,提高 SQL 的查询性能和安全性。但是...

    Oracle中的SUM用法讲解

    Oracle数据库是世界上最流行的数据库管理系统之一...学习和掌握Oracle中的SUM函数及其应用场景,对于提升数据库查询和分析能力至关重要。同时,了解如何自定义函数以处理特定需求,也是提升数据库管理技能的重要部分。

    Oracle中常用的通配符

    本文详细介绍了Oracle数据库中常用的通配符以及其他相关符号的含义及使用方法。通过这些符号的应用,可以使SQL查询更加灵活多样,有助于提高数据检索的准确性和效率。在实际工作中,掌握并熟练应用这些符号对于高效...

    Oracle提高查询效率的方法

    1. 优化 SQL 语句:避免使用 NOT IN 操作符,推荐使用 NOT EXISTS 或(外连接+判断为空)方案代替;使用 IN 时,将出现最频繁的值放在最前面,出现得最少的放在最后面;使用 EXISTS、NOT EXISTS、IN、LEFT OUTER ...

    Oracle数据库编程调优手册

    其他优化提示中,IN和EXISTS子查询的使用是个常见话题。通常,当比较单个值时,EXISTS通常比IN更高效,因为它只需要检查是否存在匹配的记录,而不需要返回实际的值。反之,如果IN中的列表较小,且不需要额外的行检查...

    oracle-use.rar_Oracle drop use_oracle

    "SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差别"是SQL查询的基础。`IN`用于判断某值是否在给定的集合中,`NOT IN`则相反。`EXISTS`和`NOT EXISTS`则更注重子查询的存在与否,而非具体值的比较。例如,`SELECT * ...

    Oracle通配符,运算符的使用

    本文旨在深入探讨Oracle数据库中通配符与运算符的使用方法,帮助读者更好地理解和掌握这些关键概念。 #### 二、Oracle通配符详解 在Oracle数据库中,通配符主要用于模糊查询,即通过模式匹配来检索符合特定条件的...

    oracle语句优化.docx

    本文将详细地介绍 Oracle 语句优化的方法和技巧,涵盖多表关联、EXISTS 和 IN 语句的使用、INDEX_JOIN 优化、WHERE 和 HAVING 语句的区别、NOT IN 和 <> 操作符的使用、LIKE 操作符的替代、UNION 操作符的优化、SQL ...

    Oracle中优化SQL的原则

    2. **避免`IN`和`EXISTS`**:这些操作可能导致全表扫描,尽量改用`JOIN`或其他方式来实现相同的功能。 3. **集合运算**:使用`UNION ALL`而非`UNION`,避免重复记录检查的开销。 **索引设计**: 1. **避免无谓的...

    Oracle Database 11g SQL Fundamentals 英文原版

    3. 子查询:理解嵌套查询的概念,掌握IN、NOT IN、EXISTS、NOT EXISTS等子查询用法。 4. 分区和索引:了解Oracle的分区技术,如何提高查询性能,以及索引的创建、管理和使用。 5. 视图:创建和使用视图以简化复杂...

    oracle+plsql性能优化

    5. PL/SQL技巧:PL/SQL在Oracle数据库性能优化中发挥着重要作用,熟练使用PL/SQL的过程化特性和优化技巧,可以进一步提高数据库操作的效率。例如,在PL/SQL程序中使用显式游标进行数据遍历可以更精确地控制数据的...

    Oracle 子查询

    ### Oracle 子查询详解 #### 引言 在数据库查询语言SQL中,子查询是一...然而,正如所有强大的工具一样,正确的使用方法和充分的性能考量是必不可少的。希望本文能为你在日常的数据库操作中提供有价值的指导和启发。

    Oracle数据库SQL优化总结

    14. **使用EXISTS替换IN,用NOT EXISTS替换NOT IN**:EXISTS和NOT EXISTS通常比IN和NOT IN更高效,尤其是在涉及子查询时。 15. **识别低效SQL语句**:监控和分析SQL执行计划,找出执行时间长、资源消耗大的语句进行...

Global site tag (gtag.js) - Google Analytics