【发布时间】:2018-12-11 19:10:38
【问题描述】:
我正在编写一个更大的存储过程,我必须加入一个包含协议的表。然而,因为我们的结构化数据库是以一种更特殊的方式制作的,所以我必须在不同的条件下加入协议才能获得所有行的正确信息。由于并非所有协议都存在于 rel 中,并且并非所有协议都存在于身份中,因此并非所有行都被加入。
如果我将下面的语句拆分并加入两次协议,它会起作用。但是,我有两组 agr,这不是最佳的。下面的陈述似乎非常低效。因为通常整个代码将在 5 分钟内运行,但这永远不会完成,而不是在 50 分钟之后。
那么有没有更好的方法来进行这个连接,我首先在 agr1.agreement_id = rel.agreement_id 上加入,如果返回 null(不加入),那么我在其余部分使用 agr1.bill_id = idt.identity。
left JOIN agreement agr1
on(agr1.agreement_id = rel.agreement_id)
or(agr1.bill_id = idt.identity)
【问题讨论】:
标签: sql oracle join optimization conditional-statements