【发布时间】:2012-05-21 11:43:13
【问题描述】:
我的查询中有 4 个全外连接,而且速度非常慢,那么FULL OUTER JOIN 的顺序是否会影响性能/结果?
全外连接 = ⋈
那么,
我有一种情况:A ⋈ B ⋈ C ⋈ D
所有连接都发生在所有 A、B、C、D 中包含的所有 k 共有的键上
然后:
- 更改 ⋈ 连接的顺序会影响性能吗?
- 改变⋈的顺序会改变结果吗?
我觉得应该不会影响结果,但是会不会影响性能我不确定!
更新:
假设结果集独立于顺序,SQL Server 是否会自动重新排列连接以获得更好的性能?
【问题讨论】:
-
结果应该是一样的。检查性能相当容易。比较将表格从几个匹配项到多个匹配项排序所需的时间与相反的顺序。
-
为什么不试试呢?查看不同组合的执行计划和 SQL Profiler 跟踪?
-
当你说不同的顺序时,你的意思是:
(a FULL JOIN b) FULL JOIN cvsa FULL JOIN (b FULL JOIN c)例如? -
是和不是。如果你把最严格的放在第一位,那么查询的其余部分将有更少的东西要加入。但是,如果您至少不能普遍保证这一点,那么以这种方式进行调整将没有多大用处。如果您发布查询计划,我们可能会为您提供更多帮助(只需将 Explain 放在查询之前并运行它,然后将 teh vresuklt 添加到您的问题中)。看看为什么需要这么多完整的外部连接可能会更好。
-
我在第一个表中有 10 万行。检查它们需要几个小时。我想了解会自动重新安排以获得更好的性能?
标签: sql sql-server join