回答

收藏

在SQL Server中联接两个表时,在哪里检查组合键的一部分有关系吗?

技术问答 技术问答 190 人阅读 | 0 人回复 | 2023-09-12

我在一个复合键上连接两个表,我想知道在连接时比较相应列的位置是否重要。0 R" ]- a% O( w, l
假设我有表 TableA,其中包含 ColAFoo、ColAFoo2 和 ColABar 列。TableA 有一个复合主键,包括 ColAFoo 和 ColAFoo2 (PK_TableA)。
/ ^0 m/ L0 U% J- L* T% N1 j我还有 TableB,带有 ColBFoo、ColBFoo2 和 ColBother。TableB 的列 ColBFoo 和 ColBFoo2 包含 TableA 主键 (FK_TableA_TableB) 的外键。- }( [7 Z" @0 q1 I/ Q
我需要在键上连接两个表。以下三个(非常人为的)陈述在性能上有区别吗?
- T3 I; q+ W, L% rSELECT *  FROM TableA a  JOIN TableB b    ON  a.ColAFoo = b.ColBFoo        AND a.ColAFoo2 = b.ColBFoo2SELECT *  FROM TableA a  JOIN TableB b    ON  a.ColAFoo = b.ColBFoo  WHERE a.ColAFoo2 = b.ColBFoo2-- this one is a little /too/ contrived,apparently (see comments)SELECT *  FROM TableA a  JOIN TableB b  WHERE a.ColAFoo = b.ColBFoo        AND a.ColAFoo2 = b.ColBFoo2 2                                                                                                                                                                                                                                                                     
$ ]  F2 q9 o- C    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则