summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Sørensen <johan@johansorensen.com>2009-12-08 18:49:48 +0100
committerJohan Sørensen <johan@johansorensen.com>2009-12-08 18:49:48 +0100
commit8745bf497049a62ee443026967c31ffc69934956 (patch)
tree59623e4b2f7d955632d7bd97d627a8879b20a976
parent2059345dcd550ed0270df4ccc16e484b0e3076c3 (diff)
downloadgitorious-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-xapp/models/event.rb14
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