Беда в том, что вам нужен индекс по группам, чтобы исключить сортировку файлов, но все ваши условия для членства.
Попробуйте добавить индекс по группам (id, creation_at).
Если это не сработает, попробуйте обмануть оптимизатор следующим образом, используя подзапрос (сохраняя вышеупомянутый индекс по группам):
SELECT SQL_NO_CACHE `groups`.*
FROM `groups`
INNER JOIN (select group_id from `memberships`
WHERE
`memberships`.user_id = 1
AND `memberships`.`status_code` = 1
AND `memberships`.`manager` = 0
) m on m.group_id=`groups`.id
ORDER BY groups.created_at DESC LIMIT 5;
Должен быть индекс как минимум membershipships.user_id, но вы также можете получить некоторую выгоду от такого индекса, как (user_id, status, manager). Я предполагаю, что status и manager - это флаги, которые не имеют большого диапазона возможных значений, так что это не так важно, пока есть индекс user_id.