我一直在尝试对此进行测试,但由于时间差异很大,我对我的测试表示怀疑。
-- Scenario 1
SELECT * FROM Foo f
INNER JOIN Bar b ON f.id = b.id
WHERE b.flag = true;
-- Scenario 2
SELECT * FROM Foo f
INNER JOIN Bar b ON b.flag = true AND f.id = b.id;
从逻辑上讲,场景 2 似乎会更有效,但我不确定 SQL 服务器是否足够聪明来优化它。