В настоящее время я бегу что-то похожее на эту команду:Rails: масштабирование с расчетами группы
Person.sum(:cholesterol, :group => :age)
, который, кажется, отлично работает, когда у меня есть небольшое количество записей. Однако, когда я пытаюсь вызвать это с несколькими тысячами записей или более в таблице, это займет буквально минуты для запуска. Однако, SQL-запрос:
SELECT sum(`people`.cholesterol) AS sum_cholesterol, age AS age
FROM `people`
GROUP BY age
занимает около 0,02 секунды на том же количестве тысяч записей. Как только у меня есть данные, мне не нужно делать больше, чем отображать его. Есть ли более эффективный способ сделать это? Я знаю, что я могу вручную делать SQL-запросы от моделей и контроллеров, я не знаю, будет ли это жизнеспособным вариантом, поскольку я не нашел четкого способа работы с результатом после запроса.
Ну, если это не тот SQL-запрос, который занимает так много времени, он должен быть чем-то другим. Посмотрите на свой журнал, чтобы узнать, нет ли каких-либо других запросов sql, которые могут быть слишком длинными (или слишком много запросов sql). –
Спасибо, это запрос, который занимает время. Когда я запускаю команду в среде mysql, она почти 1000x так же быстро, как при вызове через рельсы. Действительно ли возможно, что рельсы медленны в этом методе? У меня только проблемы с этим методом. – Evan