【发布时间】:2015-08-19 13:35:09
【问题描述】:
我问自己 NVL 函数是否比 where is not null 条件更快。我在谷歌上搜索是否有人谈论它,但没有找到明确回答这个问题的人。
所以这是我有一个 sql 请求的情况,我想知道哪个更快。 在此示例中,我简化了我的查询,只是为了让您了解我想知道的内容。
这是带有 nvl 功能的请求
SELECT TA.MNT FROM TABLEA TA WHERE TA.ID NOT IN(SELECT NVL(TB.ID,-1) FROM TABLEB TB);
这是不为空的条件
SELECT TA.MNT FROM TABLEA TA WHERE TA.ID NOT IN(SELECT TB.ID FROM TABLEB TB WHERE TB.ID IS NOT NULL);
那么哪一个会更快返回?
【问题讨论】:
-
是否有某些原因您不能自己运行测试并确定答案..?
-
不,我只是想知道是否有可能一个比另一个快,或者一个总是比另一个快。
-
我试过了,似乎非空条件更快,但我想知道 NVL 函数是否有某种方法可以更快。
-
如果 tb.id 上有索引,我会假设第二个查询可以使用它,而第一个查询不太可能使用它。不过,这完全取决于您的表和数据的结构。不过,我倾向于使用第二个查询,因为它更容易理解。
-
为什么希望 NVL 函数更快?