Исходя из одного предположения, что у каждого media
есть одно сообщение, а не много, ваш запрос может быть упрощен до:
select count(distinct model_id)
from media
where model_type = 'App\Models\Post'
, чтобы эффективно выполнить комбинированный индекс model_type
, model_id
, например ниже поможет, если не существует:
ALTER TABLE media ADD INDEX model_type_id(model_type, model_id);