select
a.id, a.title, a.content,
count(c.id) comments
from
articles a
left join comments c on c.article_id = a.id
group by a.id
Зачем вам count distinct тут внезапно понадобился и где потеряли группировку?
Вообще count под OLTP жуткая вещь с точки зрения базы - это надо прочитать каждую строчку, проверить её видимость в текущей транзакции, проверить на null и всё только ради одной циферки. Добавьте в articles колонку с числом комментариев, а за актуальностью могут следить несколько простых триггеров.