Cra*_*aig 16 sql-server inner-join
与WHERE子句相反,在连接中进行过滤是否有任何明显的性能参数?
例如,
SELECT blah FROM TableA a
INNER JOIN TableB b
ON b.id = a.id
AND b.deleted = 0
WHERE a.field = 5
Run Code Online (Sandbox Code Playgroud)
相反
SELECT blah FROM TableA a
INNER JOIN TableB b
ON b.id = a.id
WHERE a.field = 5
AND b.deleted = 0
Run Code Online (Sandbox Code Playgroud)
我个人更喜欢后者,因为我觉得过滤应该在过滤部分(WHERE)中完成,但是有任何性能或其他原因要做任何一种方法吗?
bti*_*lly 28
如果查询优化器完成其工作,则内部联接的两种形式中没有任何区别(除了其他人的清晰度).
也就是说,对于左连接,连接中的条件意味着在连接之前过滤第二个表中的行.where中的条件意味着在加入后从最终结果中过滤行.这些意味着非常不同的事情