在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 解决方案: |
|
|
|
|
|