Sql 减去vs删除oracle中存在的位置
我有一个Sql 减去vs删除oracle中存在的位置,sql,oracle,Sql,Oracle,我有一个createtable查询,可以使用两种方法完成(createasselect语句用于千条/百万条记录): 第一种方法: create table as select some data minus (select data from other table) 或 首先,我应该将表创建为 create table as select ..... 然后 delete from ..where exist. 我想第二种方法更好。对于哪种查询,成本更低?为什么负查询不如第二种方法快? 编
createtable
查询,可以使用两种方法完成(createasselect语句用于千条/百万条记录):
第一种方法:
create table as select some data minus (select data from other table)
或
首先,我应该将表创建为
create table as select .....
然后
delete from ..where exist.
我想第二种方法更好。对于哪种查询,成本更低?为什么负查询不如第二种方法快?
编辑:
我忘了提到create语句也有来自两个表的join。减号可能很慢,因为它需要对磁盘上的表进行排序,以便比较它们
尝试用
不存在
而不是减去
重写第一个查询,它应该会更快,并且会生成更少的重做和撤消操作(正如前面提到的一个没有名称的\u horse\u)。当然,确保WHERE
子句中涉及的所有字段都已编制索引 减号的速度很慢,可能是因为它需要对磁盘上的表进行排序,以便对它们进行比较
尝试用不存在
而不是减去
重写第一个查询,它应该会更快,并且会生成更少的重做和撤消操作(正如前面提到的一个没有名称的\u horse\u)。当然,确保WHERE
子句中涉及的所有字段都已编制索引 第二个将向磁盘写入大量记录,然后将其删除。在10种情况中,有9种情况下,这将比过滤您开始编写的内容花费更长的时间
因此,如果第一个不是更快,我们需要更多有关所涉及的表和语句的信息。第二个会将大量记录写入磁盘,然后删除它们。在10种情况中,有9种情况下,这将比过滤您开始编写的内容花费更长的时间
因此,如果第一个不是更快,我们需要更多关于所涉及的表和语句的信息。第一个更好。它将生成较少的重做和撤消。第一种方法更好,因为您只创建所需的记录。但我已检查,第二种方法总体上花费的时间更少。第一种方法更好。它将生成较少的重做和撤消操作。第一种方法更好,因为您只创建所需的记录。但我已经检查过了,第二种方法总体上花费的时间更少。减号也将抑制源表中的任何重复项,这可能不是问题,但可能是改用不存在
的另一个原因。减号也将抑制源表中的任何重复项,这可能不是问题,但可能是改用不存在
的另一个原因。