Извлечение всех записей из базы данных и подсчет их в PHP - чепуха. Это именно то, для чего нужны базы данных.
A find('count')
просто создает SQL-запрос наподобие SELECT COUNT(*) FROM … WHERE …
, что действительно является самым быстрым способом. Добавьте соответствующие условия, чтобы получить желаемое количество. Возможно, вам придется освежить свой SQL, чтобы узнать, каковы эти условия.
Существует также специальное встречное кеширование , на которое вы, возможно, захотите взглянуть, если учитываете отношения hasMany.