У меня есть некоторые проблемы с производительностью в проекте rails (работающем на rails 2.0.5), например, на моих страницах администрирования пользователей.
моя модель пользователя имеет много отношений (детали, адреса, роли ...), которые загружаются с нетерпением. Это создает действительно огромные SQL-запросы, в некоторых случаях загрузка 30 пользователей занимает почти минуту. С другой стороны, удаление загруженной загрузки приводит к сотням запросов, в конце концов, у меня та же проблема: загрузка страницы идет медленно.
Я занимался разработкой на Java и Oracle, для такого рода больших запросов, которые я использовал для создания представлений, эти представления затем кэшировались для более быстрого рендеринга. Поддерживать было крайне скучно, поскольку мне приходилось обновлять поля базы данных вручную в сценариях представлений и т. Д. *
НО у него действительно были фантастические выступления .... так что мне было интересно, пытался ли кто-нибудь когда-нибудь реализовать что-то, чтобы воспользоваться преимуществами представлений Mysql в активной записи?
Я только что провел несколько базовых тестов, вот мое мнение (всего несколько полей для примера, у меня есть стандартная таблица пользователей с проверкой подлинности и большая таблица «подробности» для личных данных):
CREATE VIEW users_vs AS SELECT
users.id ,
users.login ,
users.email ,
details.last_name ,
details.first_name ,
details.phone ,
details.fax ,
FROM `users` LEFT OUTER JOIN `details` ON details.user_id = users.id ;
Тогда модель:
class UsersV < ActiveRecord::Base
end
Попробовал несколько вещей в моей консоли:
u=UsersV.find(:first) # ok !
u=UsersV.find_by_last_name('smith') #=> ok !
us=UsersV.find_all_by_last_name('smith') #=> ok too !
просматривая журнал, простые запросы обрабатываются так же, как любые запросы к таблицам
Конечно, эти поддельные модели будут использоваться только для чтения данных.
Мне интересно: