我有一个CREATE TABLE查询可以使用两种方法完成(创建为千万/百万条记录的select语句):
第一种方法:
create table as select some data minus (select data from other table)
Run Code Online (Sandbox Code Playgroud)
要么
首先,我应该创建表格
create table as select .....
Run Code Online (Sandbox Code Playgroud)
然后
delete from ..where exist.
Run Code Online (Sandbox Code Playgroud)
我猜第二种方法更好.对于哪种查询成本较低?为什么减去查询的速度不如第二种方法快?编辑:我忘了提到create语句也有两个表连接.
减号可能很慢,因为它需要对磁盘上的表进行排序才能进行比较.
尝试用NOT EXISTS而不是重写第一个查询MINUS,它应该更快并且将产生更少的REDO和UNDO(a_horse_with_no_name如上所述).当然,请确保将WHERE子句中涉及的所有字段编入索引!