暂无图片
oracle查出a表数据不在b表C表的数据
我来答
分享
刘广
2021-10-26
oracle查出a表数据不在b表C表的数据
暂无图片 10M

需求:想高效查出A表不在B表和C表的数据

关联关系:A表的ID主键和B表的YWBH关联,A表的ID主键和C表的RYBH关联。

数据量:A表(200万)  B表(1500万) C表(3200万)

索引:连接条件都具备索引。

我是这样写的:

select a.* from a

where not exists(select ywbh from b where a.id=b.YWBH)

and a.rybh not in(select rybh from c where c.rybh=a.systemid)

请问大家,这样写是否符合SQL语法,不知道逻辑对不对,哪位高手有更专业的写法请指点一下,谢谢!

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
📵

WHERE NOT EXISTS (SELECT * FROM B WHERE a.id=b.YWBH)
and NOT EXISTS (SELECT * FROM C WHERE c.rybh=a.systemid)

确保表里(NOT EXISTS)不能有空值,有空值就sql语句就不对了。not in oracle会倾向忽略索引,但不是一定

暂无图片 评论
暂无图片 有用 2
打赏 0
暂无图片
文成

看一下执行计划

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
ORACLE 分区表问题
回答 2
19Calert日志打印出来的添加分区信息的分区条件,也是有空格,为什么会这样?TABLESYS.WRPREPORTS:ADDEDINTERVALPARTITIONSYSP219(3820)VALUE
AWR分析功能提示语与实际情况不准
回答 8
已采纳
这又是给@墨天轮的开发和测试加班的理由了
安装问题
回答 11
请提供截图,和描述。
Oracle数据库中的受欢迎和不受欢迎值各是什么?
回答 2
已采纳
直方图中某个值的受欢迎程度会影响基数估值算法,具体如下:  受欢迎值:受欢迎值出现在多个桶的端点值,优化器通过检查某个值是否是桶的端点值来确定该值是否受欢迎,如果是,那么对于频率直
Oracle的undo回滚是将数据库“物理地”恢复到某个语句或事务之前的样子吗?
回答 1
已采纳
针对回滚,数据库只是“逻辑地”将数据恢复到原来的样子,某些修改会被“逻辑地”取消,数据结构以及数据库块本身在回滚后可能与事务或语句开始之前的数据块状态大不相同。原因在于:在所有多用户系统中,可能会有数
OEM监控工具是什么
回答 2
厉害了
有人知道为什么ALTER TABLE tablename ENABLE TABLE LOCK 为啥没反应么
回答 1
Oracle吗?是没有反应还是一直不反回结果。用下面语句查查有没有锁该表的会话呢?selectc.owner,c.objectname,c.objecttype,b.sid,b.serial,b.st
Windows server2008安装Oracle的时候这一步怎么操作?
回答 3
硬件不符合要求,增加硬件资源,或者换个机器!硬装也用不了!
检索数据库数据是否为11位手机号
回答 3
直接在数据库里用存储过程呗,具体逻辑和你用jdbc的逻辑是一样的。我之前用类似的方法找过一个特定的值是存在于哪个表的哪个字段。直接用 selectfromusertabcols做游标写循环,
等待事件【XDB SGA initialization】
回答 1
查到类似错误提示lib库环境变量的问题,好像有的参考文档说是在11.2.0.3以后版本修复了