sql - 减去 vs 删除 oracle 中存在的地方

我有一个 CREATE TABLE 查询,它可以使用两种方法完成(为数千/百万条记录创建 select 语句):

第一种方法:

create table as select some data minus (select data from other table)

首先我应该创建表

create table as select .....

然后

delete from ..where exist.

我猜第二种方法更好。对于哪个查询成本更低?为什么负查询不如第二种方法快? 编辑: 我忘了提到 create 语句也有来自两个表的连接。

最佳答案

minus 很慢可能是因为它需要对磁盘上的表进行排序以便比较它们。

尝试用 NOT EXISTS 而不是 MINUS 重写第一个查询,它应该更快并且生成更少的 REDO 和 UNDO(如 a_horse_with_no_name 提到)。当然,要确保WHERE子句中涉及的所有字段都被索引了!

https://stackoverflow.com/questions/11779267/

相关文章:

php - Symfony2 与 CSRF token 的链接

.net - 在列表linq中选择重复项

wpf - 在 XAML 中使用图像向按钮添加鼠标悬停效果

php - 如何在 preg_match_all php 中获取组的值?

asp.net - 在 c# asp.net 中执行查询

php - 本地主机的 Instagram redirect-uri 失败

fortran - '写;没有很多空格的语句

php - 如何通过PHP检测用户断开连接?

sql-server - 如何在插入前将触发器写入散列值?

mongodb - 如何使用 C# 驱动程序中的 BsonSerializer 为 MongoDB