我仍然不明白 - 限制子句内部数据WHERE
或内部JOIN
子句中的数据对性能来说更好吗?哪种方法更好?我很久以前就读过没有区别,但我仍然不确定。我说的是INNER JOIN - 在这种情况下结果是一样的。
例子:
SELECT * FROM A JOIN B ON (A.X = B.Y) WHERE (A.Z = 5);
对比
SELECT * FROM A JOIN B ON (A.X = B.Y) AND (A.Z = 5);
我仍然不明白 - 限制子句内部数据WHERE
或内部JOIN
子句中的数据对性能来说更好吗?哪种方法更好?我很久以前就读过没有区别,但我仍然不确定。我说的是INNER JOIN - 在这种情况下结果是一样的。
例子:
SELECT * FROM A JOIN B ON (A.X = B.Y) WHERE (A.Z = 5);
对比
SELECT * FROM A JOIN B ON (A.X = B.Y) AND (A.Z = 5);
最好的方法是与您团队的编码风格相匹配的方法。如果您独自工作,那么最好的方法就是您认为最易读的方法。问题中的查询目前没有性能差异。
您可以使用未记录的跟踪标志 8606亲自查看。这是我正在测试的代码:
查询不仅具有完全相同的计划:
它们也有相同的内部输入树:
换句话说,SQL Server 在优化发生之前将查询重写为相同。因此,不会有性能差异。