Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 减去vs删除oracle中存在的位置_Sql_Oracle - Fatal编程技术网

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种情况下,这将比过滤您开始编写的内容花费更长的时间


因此,如果第一个不是更快,我们需要更多关于所涉及的表和语句的信息。

第一个更好。它将生成较少的重做和撤消。第一种方法更好,因为您只创建所需的记录。但我已检查,第二种方法总体上花费的时间更少。第一种方法更好。它将生成较少的重做和撤消操作。第一种方法更好,因为您只创建所需的记录。但我已经检查过了,第二种方法总体上花费的时间更少。
减号也将抑制源表中的任何重复项,这可能不是问题,但可能是改用
不存在
的另一个原因。
减号也将抑制源表中的任何重复项,这可能不是问题,但可能是改用
不存在
的另一个原因。