Oracle sql"NOT IN"语句优化,查询A表有、B表没有的数据

记录量大的情况下,采用NOT IN查询,那肯定会慢的无法接受。比如:

SELECT A.*
  FROM TABLE_A
 WHERE A.USER_ID NOT IN (SELECT B.USER_ID FROM TABLE_B)

目前找到的最优方法,可以秒查。示例如下,查询A表有、B表没有的DEPT_ID数据:

SELECT A.*
 FROM TB_DEPT A, TB_DEPT_LEV B
WHERE A.DEPT_ID = B.DEPT_ID(+)
AND B.DEPT_ID IS NULL

(+)号可以这样来理解: + 表示补充,即哪个表有加号,这个表就是匹配表。这里加号写在右表,左表就是全部显示,故是左连接。

原文:http://blog.csdn.net/dengjh_business/article/details/35226227

时间: 2024-11-12 08:58:48

Oracle sql"NOT IN"语句优化,查询A表有、B表没有的数据的相关文章

Oracle SQL语言DML语句与事务_超越OCP精通Oracle视频教程培训28

Oracle SQL语言DML语句与事务_超越OCP精通Oracle视频教程培训28 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第3/5套:Oracle SQL语言DML语句与事务.主要学习Oracle数据库SQL语句INSERT命令,学习使用UPDATE命令,学习使用DELETE命令,学习创建PL/SQL对象,事务概念与控制,锁的检测和锁争用,了解撤销数据. Oracle SQL语言DML语句与事务管理,课

2017-3-10 SQL server T-sql语句 高级查询

条件修改: update 表名 set 列名 = 值 where 列名 = 值条件删除: delete from 表名 where 列名 = 值高级查询条件查询 查列 *改为要查看的列,多列逗号隔开 筛选条件 where 列名 = >= <= > < 值 and or模糊查询 select * from 表名 where 列名 like '%值%' %通配符排序查询 select * from 表名 where order by 列名 asc / desc去重查询 select d

Sql语句优化-查询两表不同行NOT IN、NOT EXISTS、连接查询Left Join

在实际开发中,我们往往需要比较两个或多个表数据的差别,比较那些数据相同那些数据不相同,这时我们有一下三种方法可以使用:1. IN或NOT IN,2. EXIST或NOTEXIST,3.使用连接查询(inner join,left join 或者 right join). 看下面的数据,我们准备选择出在depart_info中的pid在user_info中不存在的depart_信息. 有表1:depart_info 表2:user_info 方法一:采用NOT IN IN和NOT IN后面接的是一

Sql语句优化——查询两表不同行NOT IN、NOT EXISTS、连接查询Left Join

在实际开发中,我们往往需要比较两个或多个表数据的差别,比较那些数据相同那些数据不相同,这时我们有一下三种方法可以使用:1. IN或NOT IN,2. EXIST或NOTEXIST,3.使用连接查询(inner join,left join 或者 right join). 看下面的数据,我们准备选择出在depart_info中的pid在user_info中不存在的depart_信息. 有表1:depart_info 表2:user_info 方法一:采用NOT IN IN和NOT IN后面接的是一

第一次写oracle SQL 两个表链接查询

我SQL很差,半天反应不过来,被同事笑话了.啊啊啊.以后必须超越他!! TABLE shop pk_shop  主键 name  商品名称 shop pk_shop name 001 羽绒服 002 可口可乐 bpm_ll_test2 pK_bpm_ll_test2主键 sname商品名称 01 001 SELECT (SELECT name from shop where shop s s.pk_shp = a.sname) from bpm_ll_test2 a;

Oracle SQL tuning 步骤

Oracle SQL tuning 步骤 SQL是的全称是Structured Query Language(结构化查询语言).SQL是一个在80年代中期被使用的工业标准数据库查询语言.不要把SQL语言与商业化产品如Microsoft SQL server或开源产品MySQL相混淆.所有的使用SQL缩略词的这些都是SQL标准的一部分. 一.SQL tuning之前的调整    下面这个粗略的方法能够节省数千小时乏味的SQL tuning,因为一旦调整它将影响数以百计的SQL查询.记住,你必须优先

数据库优化查询相关

only与defer orm内所有的语句操作都是惰性查询:只会在你真正需要数据的时候才会走数据库,如果你单单只写orm语句时不会走数据库的,这样设计的好处在于减轻数据库的压力 res = models.Book.objects.all() print(res) res = models.Book.objects.values('title') print(res) for r in res: print(r.title) res = models.Book.objects.only('title

数据库优化查询

only与defer orm内所有的语句操作都是惰性查询:只会在你真正需要数据的时候才会走数据库,如果你单单只写orm语句时不会走数据库的,这样设计的好处在于减轻数据库的压力 res = models.Book.objects.all() print(res) res = models.Book.objects.values('title') print(res) for r in res: print(r.title) res = models.Book.objects.only('title

Oracle SQL语言之常用函数_超越OCP精通Oracle视频教程培训30

Oracle SQL语言之常用函数_超越OCP精通Oracle视频教程培训30 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第5/5套:Oracle SQL语言之常用函数.主要学习Oracle数据库SQL聚合函数,分组函数,字符函数,转换函数,日期字符数字转换,日期函数,集合函数,分析函数等. Oracle SQL语言之常用函数,课程内容详细如下: 聚合函数-数据统计 分组函数-使用group by与havin