SQL Server:完全外连接的顺序是什么?

Yug*_*dle 5 sql sql-server join

我的查询中有4个全外连接,它的速度很慢,那么FULL OUTER JOIN性能/结果的顺序是否有所不同?

FULL OUTER JOIN =⋈

然后,

我有一个情况:A⋈B⋈C⋈D

所有连接都发生k在所有A,B,C,D中包含的所有连接上

然后:

  • 改变⋈连接的顺序会改变性能吗?
  • 改变order的顺序会改变结果吗?

我觉得它不应该影响结果,但它会影响性能与否我不确定!

更新:

假设结果集与订单无关,SQL Server是否会自动重新排列连接以获得更好的性能?

Mar*_*ett 8

不,重新排列JOIN订单不应影响性能.MSSQL(与其他DBMS一样)具有查询优化器,其任务是为任何给定查询找到最有效的查询计划.一般来说,这些都做得非常好 - 所以你不太可能轻易击败优化器.

也就是说,他们偶尔会弄错.这就是阅读执行计划的地方.您可以添加JOIN提示以告诉MSSQL如何连接您的表(此时,排序确实很重要).您通常从最小到最大的表排序(但是,使用a FULL JOIN,它可能不太重要)并遵循连接类型的经验法则.

既然你正在做FULL JOINS,你基本上是从磁盘上读取整个4个表.这可能非常昂贵.您可能想要重新检查问题,看看是否可以以不同的方式完成.