Подсчет количества записей - PullRequest
0 голосов
/ 14 марта 2011

У меня есть приложение Rails, у меня есть следующая схема БД: каждый пользователь имеет много участников, и каждый участник имеет много тегов. Связь между таблицами является прямой (таблица Members имеет столбец user_id, а Tags - столбец member_id).

Каков наиболее эффективный способ подсчета количества тегов, связанных с пользователем? Это через Rails и activerecord или чистый sql?

Есть мысли / примеры?

Ответы [ 2 ]

0 голосов
/ 14 марта 2011

Вызов

User.first.tags.count

(Предполагается, что в пользовательской модели установлены отношения).

- это примерно та же скорость (минус скорость активной записи).AR будет достаточно умным, чтобы ОГРАНИЧИТЬ результаты 1 и фактически использовать sql-функцию COUNT (), которая является наилучшим способом для вычисления количества записей.

Если вы действительно беспокоились об этих микрооптимизациях, чем да, я уверен, что вы можете побрить мс или две, если вы пишете чистый SQL и обходите AR.

0 голосов
/ 14 марта 2011

В вашей модели тегов вы можете добавить область действия:

scope: count_by_user, lambda {| user | members.where ("members.user_id> =?", пользователь) }

Как насчет этого? Есть ли у вас функция / отношения членов в вашей модели тегов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...