Sql 如果ORACLE中使用了两个联接字段,则完全外部联接被卡住
我有完全外部连接的问题 查询: 查询卡住了,我必须重新启动Oracle。在小数据集上一切正常,但当一个数据集很大(合格性表中的记录超过100万条)时,DB就卡住了。我必须在这两个表上使用哪个索引?您的评论: 是的,我正在尝试查找所有在tr_条目中不匹配的资格记录 那么为什么要进行完全的外部连接呢?这毫无意义。您应该改用Sql 如果ORACLE中使用了两个联接字段,则完全外部联接被卡住,sql,oracle,Sql,Oracle,我有完全外部连接的问题 查询: 查询卡住了,我必须重新启动Oracle。在小数据集上一切正常,但当一个数据集很大(合格性表中的记录超过100万条)时,DB就卡住了。我必须在这两个表上使用哪个索引?您的评论: 是的,我正在尝试查找所有在tr_条目中不匹配的资格记录 那么为什么要进行完全的外部连接呢?这毫无意义。您应该改用不存在子句: select * from eligibility e where not exists ( select * from tr_entry t where
不存在
子句:
select *
from eligibility e
where not exists
(
select *
from tr_entry t
where t.correlation_id = e.correlation_id
or t.correlation_id2 = e.correlation_id2
);
我不知道
pairing\u date
列是如何发挥作用的,所以只需将它们放入查询中即可:-)您的格式设置和缩进是疯狂的(我也对WHERE子句中的括号表示怀疑…)如果你想让人们阅读你的代码,请以一种不那么痛苦的方式格式化它。你能提供示例数据和期望的结果吗?您的查询不是最容易理解的。您仅从一个表中选择列,因此似乎不需要完全外部联接。因此,您正在尝试查找所有合格性记录,这些记录在tru条目中不匹配,反之亦然?但您只显示资格
列。这似乎没有道理。你必须重新启动Oracle吗?或者你只需要取消查询?“卡住”是指“非常慢”吗?@ThorstenKettner是的,我正试图找到所有在tr_条目中没有匹配项的资格记录
select *
from eligibility e
where not exists
(
select *
from tr_entry t
where t.correlation_id = e.correlation_id
or t.correlation_id2 = e.correlation_id2
);