diff options
author | Robin Houston <robin.houston@gmail.com> | 2012-01-12 13:51:56 +0000 |
---|---|---|
committer | Robin Houston <robin.houston@gmail.com> | 2012-01-12 13:51:56 +0000 |
commit | 2d0524b90108004d67b5ee7f21b7b69ebf8eb3df (patch) | |
tree | b18cead6d4d8edd475c8e1f29d37e35bdcd89888 | |
parent | 8d7885217fdf4bf5061233679fbb42970cab1c3c (diff) |
Improve SQL performance
Replace a slow query with a much faster equivalent one.
-rw-r--r-- | app/models/request_mailer.rb | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/app/models/request_mailer.rb b/app/models/request_mailer.rb index 272f2ea83..83cce9045 100644 --- a/app/models/request_mailer.rb +++ b/app/models/request_mailer.rb @@ -353,7 +353,18 @@ class RequestMailer < ApplicationMailer # That that patch has not been applied, despite bribes of beer, is # typical of the lack of quality of Rails. - info_requests = InfoRequest.find(:all, :conditions => [ "(select id from info_request_events where event_type = 'comment' and info_request_events.info_request_id = info_requests.id and created_at > ? limit 1) is not null", Time.now() - 1.month ], :include => [ { :info_request_events => :user_info_request_sent_alerts } ], :order => "info_requests.id, info_request_events.created_at" ) + info_requests = InfoRequest.find(:all, + :conditions => [ + "info_requests.id in ( + select info_request_id + from info_request_events + where event_type = 'comment' + and created_at > (now() - '1 month'::interval) + )" + ], + :include => [ { :info_request_events => :user_info_request_sent_alerts } ], + :order => "info_requests.id, info_request_events.created_at" + ) for info_request in info_requests # Count number of new comments to alert on |