хорошо, я полагаю, что если вы не перепроектируете / нормализуете таблицу, вы всегда будете в какой-то степени повторять запрос.
Если все, что вы хотите избежать объединения, вы можете переписать
topic.page_id = (SELECT page_id
FROM mps_pages
WHERE page_short_name = 'services'
OR page_short_name = 'questions_faqs')
до
topic.page_id = (SELECT page_id
FROM mps_pages
WHERE page_short_name = 'services' ORDER BY RAND() LIMIT 1)
OR
topic.page_id = (SELECT page_id
FROM mps_pages
WHERE page_short_name = 'questions_faqs' ORDER BY RAND() LIMIT 1)
Я не думаю, что будет слишком большой прирост производительности, хотя rand () будет выполняться дважды