http://www.itpub.net/viewthread.php?tid=984425&extra=&page=3
minus:
Select *
From gal_voucher_item item
Where item_iid In (Select item_iid
From gal_voucher_item
Minus
Select item_iid From gal_voucher_item_detail);
时间:4.438/4.39 s
not in:
Select *
From gal_voucher_item item
Where Not Exists (Select /*+ hash_aj */ 1 From gal_voucher_item_detail detail Where item.item_iid = detail.item_iid);
时间:比上面MIUNUS快多了。
not in:
Select * From gal_voucher_item Where item_iid Not In (Select item_iid From gal_voucher_item_detail);
时间:没跑出来
not exists:
Select *
From gal_voucher_item item
Where Not Exists (Select 1 From gal_voucher_item_detail detail Where item.item_iid = detail.item_iid);
时间:没跑出来
分享到:
相关推荐
在Oracle数据库中,`MINUS`、`IN` 和 `EXISTS` 是三种不同的SQL查询操作符,它们各自用于特定的数据处理场景。了解并熟练掌握这些操作符对于优化查询性能和编写复杂的SQL语句至关重要。 1. **MINUS 操作符** `MINUS...
在MySQL数据库中,`NOT IN` 和 `MINUS` 是两种常用的子查询操作,用于从结果集中排除特定的行。然而,这些操作在某些情况下可能会导致性能问题,特别是在处理大量数据时。本篇文章将探讨如何对这两种操作进行优化,...
6. **MINUS子句和NOT IN**:MINUS子句通常比NOT IN更快,但需注意,NOT IN和NOT EXISTS在处理NULL值时有所不同,NOT EXISTS在某些情况下可能更快,因为它可以使用索引。 7. **LIKE操作符的效率**:`LIKE`操作符,...
SELECT id, name FROM emp1 e WHERE e.id NOT IN (SELECT id FROM sext); ``` 2. 使用MINUS操作符: ```sql SELECT id FROM emp1 MINUS SELECT id FROM sext; ``` 3. 使用<> ALL子查询: ```sql SELECT * ...
- **避免使用Not In**:Not Exists通常优于Not In。 - **避免使用DISTINCT**:在一对多查询时,应避免在SELECT中使用DISTINCT,可以考虑使用EXIST替换。 - **避免计算索引列**:索引列不应参与计算,避免IS NULL...
3. 子查询:理解嵌套查询的概念,掌握IN、NOT IN、EXISTS、NOT EXISTS等子查询用法。 4. 分区和索引:了解Oracle的分区技术,如何提高查询性能,以及索引的创建、管理和使用。 5. 视图:创建和使用视图以简化复杂...
虽然标准SQL未直接提供`MINUS`操作,但可以通过`NOT EXISTS`子句或`LEFT JOIN`实现类似功能。 举例来说,如果要找出选修了课程1但未选修课程2的学生,可以使用以下查询: ```sql SELECT Sno FROM SC WHERE Cno ...
6. 使用`NOT IN`和子查询: ```sql SELECT * FROM emp1 WHERE id NOT IN (SELECT emp1.id FROM emp1, sext WHERE emp1.id = sext.id); ``` 类似于第一种方法,但是通过子查询进行过滤。 7. 使用`INTERSECT`操作...
- 方法a:`SELECT * FROM A WHERE A.C NOT IN (SELECT C FROM B)`可能效率较低。 - 方法b:`SELECT A.* FROM A, B WHERE A.C = B.C (+) AND B.C IS NULL`使用外连接,但注意性能问题。 - 方法c:`SELECT * FROM A...
- 使用EXISTS/NOT EXISTS可以实现全称量词的逻辑。这通常涉及到复杂的逻辑判断和数据处理流程。 #### 二、带有比较运算符的子查询 1. **基本用法** - 当内部查询能够确定返回单个值时,可以直接使用比较运算符...
1. 尽量少用嵌套查询,使用 not exist 代替 not in 子句。 2. 用多表连接代替 EXISTS 子句。 3. 少用 DISTINCT,用 EXISTS 代替。 4. 使用 UNION ALL、MINUS、INTERSECT 提高性能。 5. 使用 ROWID 提高检索速度。 6....
- Oracle 支持 `INTERSECT` 和 `MINUS` 集合运算符,而 SQL Server 用 `EXISTS` 和 `NOT EXISTS` 子句来实现相同的效果。 对于示例中的 `INTERSECT` 和 `MINUS` 运算符,可以使用 `EXISTS` 或 `NOT EXISTS` 来达到...
此题使用自连接和集合操作(如`MINUS`或`EXCEPT`,在某些数据库系统中可能为`NOT EXISTS`)找出这些学生。 以上就是基于题目内容的SQL知识点解析,涵盖了子查询、JOIN操作、聚合函数、条件过滤、集合操作等核心概念...
NOT EXISTS也比NOT IN更高效,原因与EXISTS类似。 #### 18. EXISTS与DISTINCT 在某些情况下,使用EXISTS代替DISTINCT可以提高性能。 #### 19. SQL语句的编写技巧 编写高效的SQL语句需要注意多方面的细节,如避免...
嵌套查询部分将展示如何通过不同的SQL子句来提取复杂的数据集,例如通过〔in〕、〔any〕、〔some〕、〔all〕、〔exists〕、〔union〕、〔intersect〕和〔minus〕等关键字。多表查询(关联查询)将强调如何基于特定...
6. **子查询优化**:合理使用`IN`、`NOT IN`、`EXISTS`和`NOT EXISTS`。当子查询结果无重复时,`IN`和`EXISTS`可以互换;当保证子查询结果非空时,`NOT IN`和`NOT EXISTS`可用`LEFT JOIN`替代。尽量避免不必要的子...
Oracle 的 From 子句表的顺序,Where 子句表达式的顺序,避免使用 ‘*’,使用 Truncate 代替 Delete,使用索引尽量减少对表的查询,避免使用右匹配或者中间匹配的模糊查询,并注意使用 exists、NOT EXISTS、NOT IN ...
- **IN/NOT IN操作符优化**:在业务密集的SQL中尽量避免使用`IN`和`NOT IN`操作符,可以使用`EXISTS`或`NOT EXISTS`来代替,以提高性能。同时,如果使用`IN`操作符,应将出现频率最高的值放在列表的前面。 - **IS ...
1. 子查询和集合操作:`IN`, `NOT IN`, `MINUS`, `ALL`, `EXISTS`, `INTERSECT`。 2. `JOIN`操作:`LEFT JOIN`, `INNER JOIN`,以及如何使用连接条件。 3. 聚合函数:`COUNT`, `SUM`,以及`GROUP BY`语句。 4. 计算...
在描述中提到的符号和操作符,例如`+`、`-`、`*`、`/`用于基本的数学运算,`IS NULL`和`IS NOT NULL`用于检查值是否存在,`BETWEEN`、`NOT BETWEEN`用于区间判断,`IN`、`NOT IN`、`ANY`、`SOME`、`ALL`用于集合比较...