首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用左连接时,ISNULL() verse的性能为空

使用左连接时,ISNULL() verse的性能为空
EN

Stack Overflow用户
提问于 2013-02-19 21:29:40
回答 1查看 653关注 0票数 1

sub1和sub2都与super有一对一的关系。

我希望确定对于给定的超级记录,它们中的任何一个是否存在联接。

下面两个查询应该会产生我想要的结果。是否有任何理由使用!ISNULL()而不是IS NOT NULL?

代码语言:javascript
复制
SELECT super.*
FROM super
LEFT OUTER JOIN sub1 ON super.id=sub1.super_id
LEFT OUTER JOIN sub2 ON super.id=sub2.super_id
WHERE (!ISNULL(sub1.id) OR !ISNULL(sub2.id)) AND super.id=123;

SELECT super.*
FROM super
LEFT OUTER JOIN sub1 ON super.id=sub1.super_id
LEFT OUTER JOIN sub2 ON super.id=sub2.super_id
WHERE (sub1.id IS NOT NULL OR sub2.id IS NOT NULL) AND super.id=123;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-19 21:36:08

使用您的第二个选择(IS NOT NULL)。查询优化器可能不能帮助您提高第二个查询的效率。但是查询优化器不执行函数。它假设它必须为所有可能的行和列计算您给出的任何函数;它不会尝试推断函数的含义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14958762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档