Oracle中 NOT IN 优化
发布时间:2020-12-12 15:20:15 所属栏目:百科 来源:网络整理
导读:针对一个 NOT IN 语句: SELECT OBJECT_ID FROM HSP_OBJECT T WHERE T.OBJECT_ID NOT IN ( SELECT DISTINCT FORM_ID FROM HSP_FORM TT )ORDER BY T.OBJECT_ID; 如果数据量不大,那么没有问题。 但是数据量过大的时候,NOT IN 效率差的特点会十分明显。 此时
针对一个 NOT IN 语句: SELECT OBJECT_ID FROM HSP_OBJECT T WHERE T.OBJECT_ID NOT IN ( SELECT DISTINCT FORM_ID FROM HSP_FORM TT ) ORDER BY T.OBJECT_ID ; 如果数据量不大,那么没有问题。 但是数据量过大的时候,NOT IN 效率差的特点会十分明显。 此时就需要使用其他方法: 常见的可以用 外部连接、NOT EXISTS 来替换:
1. 外部连接: SELECT T1.OBJECT_ID FROM HSP_OBJECT T1 LEFT JOIN HSP_FORM T2 ON T1.OBJECT_ID = T2.FORM_ID WHERE T2.FORM_ID IS NULL ORDER BY T1.OBJECT_ID ; 2. NOT EXISTS: SELECT OBJECT_ID FROM HSP_OBJECT T WHERE NOT EXISTS ( SELECT 'G' FROM HSP_FORM TT WHERE TT.FORM_ID = T.OBJECT_ID ) ORDER BY T.OBJECT_ID ;
另:IN 和 NOT IN 都建议使用 EXISTS 和 NOT EXISTS 代替。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)
- cocos2d-iphone – Cocos2d:纯色矩形精灵?
- swift与结构体
- objective-c – 使用魔术词为类别添加前缀的惯例是什么?
- c# – 无法获取属性’unobtrusive’的值:object为null或un
- (转载)SQLite入门与分析(二)---设计与概念
- c# – 为什么我不能使用LINQ to SQL将数据更新到数据库中?
- ruby-on-rails – Ruby变量赋值为false但是为零
- vscode切换集成终端:cmd / powershell / git bash
- Ruby中的Garbarge集合与循环对象引用