Хорошо, я нашел ответ, для тех, кто не может найти это, как я: НЕ используйте CreateGraphics ()!
"Проблема" с представлениями (и в этом случае Вы, вероятно, хотели бы осуществленное представление, принимая данные, на которых базируется сложный запрос, часто не изменяется), то, что Вы нарушаете DRY'ness направляющих, в некоторой степени (добавление модели UserV для представления, которое обсудят пуристы, дублирование модели User.)
Таким образом, идеальное решение состояло бы в том, чтобы получить все возможное от RDBMS для Вашего сложного запроса. Memcached не сможет помочь Вам, если некэшируемые запросы все еще займут много времени для выполнения (все еще необходимо выполнить их для заполнения memcached), или если Вы не можете разместить немного выдумки времени (т.е. кэшируемые результаты не должны быть в реальном времени точными), и/или включенные таблицы часто изменяются.
http://github.com/aeden/rails_sql_views/tree/master
↑ Создать представление в миграции. Я также только использовал бы их в крайних случаях, поскольку они скрывают логику из Вашего приложения, и это обычно не хорошо.
Если у Вас есть так очень связанные данные, Вы могли бы посмотреть на использование чего-то как DataMapper вместо ActiveRecord с направляющими, поскольку это поддерживает лениво загружающиеся данные как требуется.
Удостоверьтесь, что MySQL Query Caching включен, который кэширует набор результатов. У меня было несколько ситуаций, где много запросов без соединений по сравнению с немногими запросами с соединениями на самом деле быстрее даже при том, что Вы совершаете больше поездок в сервер.
Я использую табличные представления в направляющих регулярно, и я довольно доволен этим. Направляющие рассматривают их как нормальные таблицы насколько Вы только используете их для чтения записей (который является моим обычным сценарием). Пока Ваше представление состоит только из одной таблицы, можно даже сделать все другие материал CRUD с ним, также. Так, мой ответ: просто сделайте это.