Пользовательский алгоритм сопоставления Rails 3 с SQL-запросом (СЛОЖНО)

В настоящее время я работаю над приложением, которое сопоставляет пользователей на основе ответов на вопросы. Я реализовал свой алгоритм в обычных запросах RoR и ActiveRecord, но этос медленно, чтобы использовать его. Для сопоставления одного пользователя с 100 другими пользователями требуется

Completed 200 OK in 17741ms (Views: 106.1ms | ActiveRecord: 1078.6ms)

на моей локальной машине. Но все же ... Теперь я хочу реализовать это в сыром SQL, чтобы повысить производительность. Но я'У меня действительно возникают проблемы с тем, чтобы разобраться в SQL-запросах внутри SQL-запросов и тому подобном, плюс расчеты и т. д. Моя голова взорвется, и я неЯ даже не знаю, с чего начать.

Вот'Мой алгоритм:

def match(user)
  @a_score = (self.actual_score(user).to_f / self.possible_score(user).to_f) * 100
  @b_score = (user.actual_score(self).to_f / user.possible_score(self).to_f) * 100

  if self.common_questions(user) == []
    0.to_f
  else
    match = Math.sqrt(@a_score * @b_score) - (100 / self.common_questions(user).count)
    if match 

Ответы на вопрос(2)

Ваш ответ на вопрос