Делаю новую страницу на своём сайте для
пользователей, так получается что там будет
запрос с двумя join (вот
набросок,упрощённый, без where):
SELECT *
FROM t1
LEFT JOIN t2 ON t1.post_id = t2.post_id
INNER JOIN t3 ON t2.post_id = t3.id
Таблицы t1 и t2 очень малы, несколько КБ, три
столбца в каждом и все integer. А вот t3
внушительна, растёт каждый день.
Я не разбираюсь в запросах, и вообще в
mysql.. Но знаю что джоины нехило могут
грузить сервер, и не рекомендуется их
выполнять на частозаходимых страницах, что
я хочу сделать
Как работает этот запрос с точки зрения БД?
Мне кажется так: сначала t1 left join t2 найдёт
необходимые id-шники, их будет немного,
0-100 штук, а уж только потом mysql
возьмется за t3. Если mysql начнёт перебирать
t3 в последнюю очередь, с готовыми id-
шками, то запрос будет не таким уж
серьёзным. Так ведь?
Или mysql в каждом своем цикле работает
сразу со всеми тремя таблицами? Если это
так то я лучше переделаю запрос на
select * from t3 where id in(select t2.post_id from
t1 left join t2 on..)
|