Буквально недавно писал выборку для постов в блогах, с лайкнувшими, тэгами, аватарами, подписаными на автора и ещё много чем. Лайкнувшие лежат в массиве, прямо в записи с постом, как и другие подобные сущности. Чтобы показать ленту пользователю, с его настройками (поиск, учёт игнорируемых авторов, тэгов, и прочее) одни селектом собирается JSON объект, готовый для рендера на фронте.
За раз выбирается 50 постов. На всю ленту один запрос в БД. Всё это в функции PostgreSQL. Статистика исполнения показывает всего три разных плана выполнения, и среднее время 0.09 мс.