From bac1bcc79f73d8890c5d0e1489ab9a4caf3ed276 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Wed, 10 Apr 2019 13:56:44 +0800 Subject: [PATCH] PERF: Add `index_reply_id_on_post_replies`. Speeds up the reference posts query in `Email::Sender#send`. --- .../20190410055459_add_index_reply_id_on_post_replies.rb | 5 +++++ lib/email/sender.rb | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20190410055459_add_index_reply_id_on_post_replies.rb diff --git a/db/migrate/20190410055459_add_index_reply_id_on_post_replies.rb b/db/migrate/20190410055459_add_index_reply_id_on_post_replies.rb new file mode 100644 index 00000000000..0577049d4bc --- /dev/null +++ b/db/migrate/20190410055459_add_index_reply_id_on_post_replies.rb @@ -0,0 +1,5 @@ +class AddIndexReplyIdOnPostReplies < ActiveRecord::Migration[5.2] + def change + add_index :post_replies, :reply_id + end +end diff --git a/lib/email/sender.rb b/lib/email/sender.rb index 0de51e5bf3e..488a15edf66 100644 --- a/lib/email/sender.rb +++ b/lib/email/sender.rb @@ -110,7 +110,8 @@ module Email "" referenced_posts = Post.includes(:incoming_email) - .where(id: PostReply.where(reply_id: post_id).select(:post_id)) + .joins("INNER JOIN post_replies ON post_replies.post_id = posts.id ") + .where("post_replies.reply_id = ?", post_id) .order(id: :desc) referenced_post_message_ids = referenced_posts.map do |referenced_post|