当我们加入t1
到t2
到t3
到t4
时,我们可以去:
t3->t4->t2->t1
t1->t2->t3->t4
t4->t3->t2->t1
.....
我们是否有任何方法可以强制SQL Server中的优化器从连接链中的特定表开始?类似Oracle领导的东西
我正在寻找像SQL Server中的领先(在Oracle中)的解决方案。
答案 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)