Если вы собираетесь использовать прямой подход SQL, описанный Salil, а не более ActiveRecord подход, предложенный Eimantas, тогда вы можете использовать следующий SQL
SELECT * FROM questions as q
WHERE NOT EXISTS (SELECT * FROM answers AS a WHERE a.question_id = q.id)
В отличие от
select * from questions
where id not in (select DISTINCT question_id from answers)
Первый запрос выполнялся для меня в 8 раз быстрее для таблицы из 140000 строк, причем 10% строк не имели ответа. Я ожидаю, что это будет варьироваться от двигателя к двигателю в зависимости от% оставшихся без ответа вопросов.
Решение Eimantas хорошо, если вы создадите столбец с именем answers_count в таблице вопросов, тогда ActiveRecord сохранит это для вас, и это должно быть очень быстро.