SQL连接具有可空列

时间:2017-04-03 18:20:56

标签: sql oracle join null

我试图弄清楚在连接两个表时,性能方面的最佳方法是什么,其中一个连接列可能为空。

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)

有些东西告诉我可能有更好的方法来完成这项工作。想法?

1 个答案:

答案 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 )
        )