回答

收藏

或者相关子查询存在的子句有关,后者更好

技术问答 技术问答 245 人阅读 | 0 人回复 | 2023-09-14

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  这两个查询都给出了相同的输出,在性能上是明智的连接或existing哪一个更好?2 n$ k% Q: G& _1 J4 U4 ^5 u
编辑:-是否有联接使用alternet提高性能的方法:-在以上两个查询中,我需要来自部门和联系信息表的信息2 P' l, u3 ~% r' A9 f
                                                               
/ S; ]$ ?2 D( P4 X+ h5 R8 n    解决方案:                                                                . v. n; _4 p2 d# Y8 A+ q/ z
                                                                通常,使用EXISTS子句是因为您可能需要DISTINCT进行JOIN提供预期输出。例如,如果一行中有多个Department行ContactInformation。' Y) A8 B6 T8 ?/ [  U
在上述示例中,SELECT *:
$ B, R  s, o0 w7 b这也意味着不同的输出,所以它们实际上并不等效
9 V' k$ G* l; Z9 |4 I' h很少有机会使用索引,因为你正在拉出所有列
即使列表有限,他们也会给出同样的计划,直到你需要它DISTINCT …这就是为什么我说  EXISTS”
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则