加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 带有exists子句的JOIN或Correlated子查询,哪一个更好

发布时间:2020-12-12 08:52:37 所属栏目:MsSql教程 来源:网络整理
导读:select * from ContactInformation c where exists (select * from Department d where d.Id = c.DepartmentId )select * from ContactInformation c inner join Department d on c.DepartmentId = d.Id 两个查询都给出相同的输出,这在性能明智的连接或与exi
select * 
from ContactInformation c 
where exists (select * from Department d where d.Id = c.DepartmentId )

select * 
from ContactInformation c 
inner join Department d on c.DepartmentId = d.Id

两个查询都给出相同的输出,这在性能明智的连接或与exists子句的相关子查询中是好的,哪一个更好.

编辑: – 有连接的alternet方式,以提高性能: –
在上面的2个查询中,我想要来自dept以及contactinformation表的信息

解决方法

通常,EXISTS子句因为您可能需要DISTINCT来为JOIN提供预期输出.例如,如果ContactInformation行有多个Department行.

在上面的示例中,SELECT *:

>也意味着不同的输出,所以它们实际上并不等同
>使用索引的可能性更小,因为您将所有列拉出来

这么说,即使列表列表有限,他们也会给出相同的计划:直到你需要DISTINCT …这就是为什么我说“EXISTS”

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读