Однозначно не передавать все данные каждый раз. Добавить в данные поле "Ревизия", которое будет увеличиваться при каждом обновлении записи в таблице, на следующее глобальное значение.
При синхронизации - доставать из БД только те записи, ревизия которых больше чем последняя известная удаленному серверу, и передавать только их.
Изменяют данные в обеих БД, или одна из них однозначно владеет данными, а вторая только читает?
SELECT id, worker_id, p.name AS worker_name, p.login AS worker_login FROM workers_ads wa
join people p on p.id = wa.worker_id
А в остальном - надо уже смотреть в БД, есть ли там нужные индексы, какого размера таблицы и т.д.
И стоит почитать вам таки какую-нибудь умную книжку по SQL, вопрос очень базовый.