【发布时间】:2014-02-11 01:32:30
【问题描述】:
这些是如何进行连接的 3 种方法。我想听听关于这 3 个查询的性能的一些消息。 谢谢
SELECT * FROM
tableA A LEFT JOIN tableB B
INNER JOIN tableC C
ON C.ColumnC = B.ColumnB
ON B.ColumnB = A.ColumnB
WHERE ColumnX = 'XY'
对比
SELECT * FROM
tableA A LEFT JOIN tableB B
ON B.ColumnB = A.ColumnB
INNER JOIN tableC C
ON C.ColumnC = B.ColumnB
WHERE ColumnX = 'XY'
与公用表表达式
WITH T...
【问题讨论】:
-
使用实际执行计划运行它们并进行调查。很难预测。
-
我用自己的几张表做了一些测试。前两个结果接缝非常接近。
-
您是否在第一个代码块中缺少一些括号? tableB 的 JOIN 条件在 tableC 上的 INNER JOIN 之后?
-
@NickyvV - 这是完全有效的 T-SQL。这意味着,首先执行 TableB 和 TableC 之间的 INNER JOIN。然后将生成的表左连接到 TableA。
-
就个人而言,我将我的 INNER JOIN 保持在顶部。在此示例中,我将有一个带有左连接的 CTE。在此之下,我将在 TableC 上进行内部连接。
标签: tsql left-join inner-join database-performance