sql - 加快 oracle sql 删除查询

标签 sql performance oracle query-optimization

<分区>

我想知道这个查询的最佳替代查询是什么。 (从性能方面)

delete from CDR where anum not in (select msisdn from subs) 
                   or bnum not in (select msisdn from subs)

此外,如果您可以引入多个可以以相同方式工作的查询,那就太好了。请考虑 anum 和 bnum 不能为空。

最佳答案

也许是这个:

delete from 
(select cdr.*
from cdr 
   left outer join subs a on a.msisdn = cdr.anum
   left outer join subs b on b.msisdn = cdr.bnum
where a.msisdn is null or b.msisdn is null);

delete from cdr
where rowid <>all
(select cdr.rowid
from cdr
   join subs a on a.msisdn = cdr.anum
   join subs b on b.msisdn = cdr.bnum)

delete from cdr
where not exists 
(select 'x'
from cdr
   join subs a on a.msisdn = cdr.anum
   join subs b on b.msisdn = cdr.bnum)

问题是你查询的是不存在的东西,因此总是很难 使用索引。

关于sql - 加快 oracle sql 删除查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24341910/

相关文章:

javascript - jQuery 数据选择器中正则表达式的性能 : dependance on certain string length

c++ - std::map clear() 在调试器中的性能?

java - 线程中的异常 "main"org.hibernate.exception.SQLGrammarException : ORA-02289: sequence does not exist

java - 应该将什么传递给此方法 (Field#get(Object obj))?

sql - 测试链接服务器的连接并返回连接的链接服务器

mysql - 如果任何行包含该键的指定值,如何选择该键的所有行

sql - 如何查询int列中的任何值?

javascript - ng-repeat 内的 angularjs ng-model 性能较差

javascript - Node.js SQLite 3 返回 promise

sql - 合并两个表并求和