diff options
author | Johan Sørensen <johan@johansorensen.com> | 2009-12-08 18:49:48 +0100 |
---|---|---|
committer | Johan Sørensen <johan@johansorensen.com> | 2009-12-08 18:49:48 +0100 |
commit | 8745bf497049a62ee443026967c31ffc69934956 (patch) | |
tree | 59623e4b2f7d955632d7bd97d627a8879b20a976 | |
parent | 2059345dcd550ed0270df4ccc16e484b0e3076c3 (diff) | |
download | gitorious-mainline-outdated-8745bf497049a62ee443026967c31ffc69934956.zip gitorious-mainline-outdated-8745bf497049a62ee443026967c31ffc69934956.tar.gz gitorious-mainline-outdated-8745bf497049a62ee443026967c31ffc69934956.tar.bz2 |
Use a faster two query stategy for finding the latest events
-rwxr-xr-x | app/models/event.rb | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/app/models/event.rb b/app/models/event.rb index f41e9c2..e62fa5f 100755 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -38,13 +38,13 @@ class Event < ActiveRecord::Base def self.latest(count) Rails.cache.fetch("events:latest_#{count}", :expires_in => 10.minutes) do - find(:all, { - :from => "#{quoted_table_name} use index (index_events_on_created_at)", - :order => "events.created_at desc", - :limit => count, - :include => [:user, :project, :events], - :conditions => ["events.action != ?", Action::COMMIT] - }) + latest_event_ids = Event.find_by_sql( + ["select id,action,created_at from events " + + "use index (index_events_on_created_at) where (action != ?) " + + "order by created_at desc limit ?", Action::COMMIT, count + ]).map(&:id) + Event.find(latest_event_ids, :order => "created_at desc", + :include => [:user, :project, :events]) end end |