在物质上匹配的列的顺序吗?
SELECT a.name, a.code, a.OBJECT_NAME, a.id, s.id_WANTED
FROM table_1 a
RIGHT JOIN s ON
a.code = s.code
AND a.id = s.id_WANTED
SELECT a.name, a.code, a.OBJECT_NAME, a.id, s.id_WANTED
FROM table_1 a
RIGHT JOIN s ON
a.id = s.id_WANTED
AND a.code = s.code
答案 0 :(得分:0)
不能保证并且不能依赖T-SQL WHERE
子句中的短路,因为优化器可以选择对其进行评估(see this Stack DBA question for a canonical answer)。意识到我们可以实际编写查询,以便ON
子句逻辑出现在WHERE
子句中(注意:我不建议以这种方式编写查询):< / p>
SELECT a.name, a.code, a.OBJECT_NAME, a.id, s.id_WANTED
FROM table_1 a, table_2 s
WHERE a.id *= s.id_WANTED AND
a.code *= s.code;
由于我们知道上面没有保证的操作顺序,因此我们可以假定联接的行为是这样的。
答案 1 :(得分:0)
没关系,因为查询引擎将根据索引和其他统计信息重新组织JOIN顺序。 将 OPTION(强制订单)添加到查询中,您会发现这很重要。
作为一般的经验法则,JOIN顺序应位于最少记录的表顶部,并且多数记录的表最后。因此,性能会很高更好。