но, по моему, это будет слишком тяжело для баз
Чтобы для баз было легче, просто сделайте индексы на тех полях, по которым происходит объединение. Один джоин это ещё не «слишком тяжело». Но если вы думаете, что, после запроса с одним джоином, SQL-сервер выйдет из строя на полгода раньше, надорвётся и начнёт глючить, или во время этого запроса будет потреблять электроэнергию, как 100 сварочных аппаратов, то, конечно, можно сделать два запроса, на которые потратится время, а потом потратить время ещё и на цикл в PHP.
Вообще, лучший способ: замерьте время, которое вам понадобится на то, чтобы получить данные запросом с джоинами, а так же время, которое понадобится для того, чтобы получить данные двумя запросами и с помощью циклов в PHP их объединить. Для чистоты эксперимента, можно вычислять среднее время на 1000 или больше повторений.
Если у вас базы данных находятся на разных серверах, как вы написали, то самый простой способ — выбрать из каждой таблицы данные отдельно, и уже в PHP сделать объединение. Либо можно использовать
FEDERATED таблицы.