А чем не устроил withCount?
Если он также тормозит, то можно провести денормализацию: добавить поле-агрегатор в таблицу категорий (или в отдельную таблицу с отношением 1 к 1) и обновлять его при добавлении/удалении подчиненной модели в обработчике события https://laravel.com/docs/8.x/eloquent#events-using... все-таки чтение этой информации будет происходить явно в десятки/сотни раз реже изменения.
Ну и дополнительный вопрос: а есть ли индекс по category_id? А то разное бывает.
ХранилищеНастроек = ОбщегоНазначения.ЗначениеРеквизита(ОбработкаСсылка,"ХранилищеНастроек");
НастройкиСтруктура = ХранилищеНастроек.Получить();
ДополнительнаяОбработкаОбъект = Параметры.ДополнительнаяОбработкаСсылка.ПолучитьОбъект();
ДополнительнаяОбработкаОбъект.ХранилищеНастроек = НовыйХранилищеЗначения(НастройкиСтруктура);
ДополнительнаяОбработкаОбъект.Записать();