Что альтернативы к find_by_sql для computationaly-тяжелых запросов?

  1. Симулятор фокусировки
  2. Перейти в меню Файл-> Сохранить снимок экрана

    или

    Нажмите + S

Снимок экрана сохраняется на рабочем столе

5
задан btelles 26 June 2009 в 16:49
поделиться

5 ответов

Вы можете использовать DataMapper или Sequel для вашего ORM, если вы обнаружите, что ActiveRecord не хватает выразительности, необходимой для сложных запросов. . Отказ от ActiveRecord маловероятен, но, возможно, стоит хотя бы изучить его.

0
ответ дан 14 December 2019 в 19:22
поделиться

Похоже, ваши таблицы можно нормализовать. В одном месте, где я работал, объем проведенной нами нормализации повлиял на наши потребности в отчетности, поэтому мы создали несколько теневых таблиц, содержащих кучу агрегированных данных, и составили отчеты против них.

Я согласен с комментарием Нила Н. вопрос немного расплывчатый, но, может быть, он поможет вам двигаться в правильном направлении?

1
ответ дан 14 December 2019 в 19:22
поделиться

Есть ли в ваших отчетах что-либо, что препятствует использованию представления SQL или хранимой процедуры?

В одном конкретном проекте я часто считаю полезным метод, заключающийся в создании запроса SQL ( это может быть довольно сложно) в качестве именованного представления в базе данных, а затем использовать

 YourModel.connection.select_all(query)

для возврата данных. Это не оптимальный подход; Я очень хочу изучить его улучшения.

К сожалению, как вы предположили, поддержка создания сложных отчетов на основе базы данных внутри рельсов кажется довольно ограниченной.

1
ответ дан 14 December 2019 в 19:22
поделиться

Хотя наше решение не зависит от базы данных, наше решение - это функции plpgsql, где использование Ruby и ActiveRecord становится очень медленным.

2
ответ дан 14 December 2019 в 19:22
поделиться

Плагин Squirrel от Thoughtbot добавляет множество рубиновых функций к методу find ActiveRecord с многоуровневыми условными выражениями, диапазонами и вложенными ассоциациями моделей:

www.gotitbot.com / projects / squirrel /

1
ответ дан 14 December 2019 в 19:22
поделиться