我试图弄清楚在连接两个表时,性能方面的最佳方法是什么,其中一个连接列可能为空。
table1:
L_ID
U_ID
L_NAME
U_NAME
table2:
L_ID
U_ID
L_TAGS
这是在Oracle 11+上,在上面的两个表中,U_ID都可以为null。如果它在一个中为null,则在另一个中为空,即fwiw。
我目前正在使用:
table1.L_ID = table2.L_ID
and nvl(table1.U_ID, 0) = nvl(table2.U_ID, 0)
有些东西告诉我可能有更好的方法来完成这项工作。想法?
答案 0 :(得分:1)
是。设为sargable,以便在可用时使用索引。
where table1.L_ID = table2.L_ID
and (
table1.U_ID = table2.U_ID
or (table1.U_ID is null and table2.U_ID is null )
)