Я всегда, хотя объединение получает результаты чего-то, а затем присоединяется только с использованием этих результатов.
SELECT * FROM tbl AS t1
JOIN tbl2 AS t2 ON t1.id = t2.foreignId
JOIN tbl3 AS t3 ON t2.id = t3.foreignId
WHERE t1.date > SOMEDATE
Насколько я понимаю, он запустит оператор where и получит только результаты, попадающие в диапазон дат. Затем он пройдет через все t2 и попытается сопоставить только идентификаторы, которые подключаются к t1 (что может уменьшить результаты). Затем с этими меньшими потенциальными результатами он сделает то же самое для T3 и выдаст окончательные результаты.
Но, похоже, это НЕ так, как это работает? И таблицы умножаются, а не становятся меньше. И, видимо, то, что я описываю выше, больше похоже на подзапросы? (Обратите внимание, что я сказал, как. Я не знаю, как работают подзапросы)
Как работает JOIN и в чем разница между JOIN и подзапросом?
Я использую и MySql, и SQLite. Я не знаю, если это актуально.