また、OPのクエリは、すべてのPMと削除されたトピックも取得してしまいます。
次のようなものにする必要があると思います。
SELECT
COUNT(*)
FROM topics t
JOIN categories c ON c.id = t.category_id
WHERE c.read_restricted IS FALSE
AND t.archetype = 'regular'
AND t.deleted_at IS NULL
また、OPのクエリは、すべてのPMと削除されたトピックも取得してしまいます。
次のようなものにする必要があると思います。
SELECT
COUNT(*)
FROM topics t
JOIN categories c ON c.id = t.category_id
WHERE c.read_restricted IS FALSE
AND t.archetype = 'regular'
AND t.deleted_at IS NULL