Два запроса НЕ идентичны.
Марк Баннистер был прав, указав, что предложение where
применяется ко всему результирующему набору, но включение clause
применяется к объединению.
В вашем случае, для SQL 1 фильтр условий LEFT JOIN включается справа, но левая сторона всегда возвращается перед любой фильтрацией WHERE. Поскольку нет условий WHERE, все t1 всегда возвращается.
В SQL 2 условия LEFT JOIN фильтруют некоторые результаты, отображаемые справа, но снова возвращается все t1. Но на этот раз условия WHERE могут отфильтровать некоторые записи t1.
INSERT INTO `t1` (`f1`,`f2`,`f3`) VALUES (1,1,1);
INSERT INTO `t2` (`f3`) VALUES (1);
Поскольку они указывают на различную логику, запрос должен быть написан на основе этого, и это дает нам большую силу и гибкость.
INNER JOIN, однако, возвращает тот же результат, так что да, проверьте оптимизатор.