如何在SQL Server中强制连接顺序

时间:2015-09-29 13:03:11

标签: sql sql-server oracle

当我们加入t1t2t3t4时,我们可以去:

t3->t4->t2->t1
t1->t2->t3->t4
t4->t3->t2->t1
.....

我们是否有任何方法可以强制SQL Server中的优化器从连接链中的特定表开始?类似Oracle领导的东西

我正在寻找像SQL Server中的领先(在Oracle中)的解决方案。

2 个答案:

答案 0 :(得分:4)

如果除了连接的顺序之外,你知道什么类型的连接,那么你可以是明确的:

a:hover {
    margin: 0 0 0 -1px;
}

这会强制执行排序以及类型(请参阅here)。

如果要在不强制订单的情况下指定使用特定类型的连接,请改用SELECT * FROM T1 HASH JOIN T2 ON T1.ID = T2.T1_ID; 。并且,如果您想要订购而不是类型,请使用option。但是,SQL Server优化器通常非常好,因此很少需要force order

答案 1 :(得分:2)

有FORCE ORDER提示:

SELECT * FROM T1 JOIN T2 ON T1.ID = T2.T1_ID OPTION (FORCE ORDER)