Производительность на рельсах 2: включает - PullRequest
0 голосов
/ 22 июня 2011

У меня много проблем со страницей, где мне нужно отобразить несколько графиков о данных в классе «Пост».Вот соответствующие модели.

class Primary
  has_many :secondary
  has_many :posts, :through => :secondary
  has_many :authors, :through => :secondary
end

class Secondary
  belongs_to :primary
  has_many :posts
  has_many :authors
end

class Post
  belongs_to :secondary
  belongs_to :author
end

class Author
  has_many :posts
  belongs_to :secondary
end

Класс Author имеет один атрибут, который можно отфильтровать: «категория».

У меня есть запрос, который фильтрует то, что пользователь хочет в сообщенииданных и отображает их на странице:

@primary.posts.count(:include => :author, :conditions => @conditions)

Это всегда работало хорошо, но теперь, когда количество участвующих авторов значительно возросло, когда пользователь пытается выполнить фильтрацию по категории, я добавляю условие "author.category IN (1, 2) ", а затем выполнение запроса занимает более 50 секунд, в отличие от 2, 3, которые он обычно выполняет.

Что можно сделать, чтобы улучшить это?Я занимался этим весь день, и единственное, что я придумал, - это сохранение значения категории в посте, но это будет означать добавление большого количества проверок и заданий для обновления данных по всем постам, когда авторотредактировано: (

Заранее спасибо.

1 Ответ

0 голосов
/ 22 июня 2011

Может быть, вы можете попробовать пакетный поиск , вы также можете увидеть Направляющие 2 направляющие "4.5 Пакетная обработка" .

Если у вас есть время, вы также можете увидеть некоторые из этих скринкастов по масштабированию рельсов

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