diff --git a/CHANGELOG.md b/CHANGELOG.md
index 10446e02d1c1313f17c0ee877ca88d7db50af1bf..1c5c96c452843744908a4315662e7ce954179b47 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,8 @@ Please view this file on the master branch, on stable branches it's out of date.
   - Simpler arguments passed to named_route on toggle_award_url helper method
   - Fix: Backup restore doesn't clear cache
 
+  - Use MergeRequestsClosingIssues cache data on Issue#closed_by_merge_requests method
+
 ## 8.13.0 (2016-10-22)
 
   - Fix save button on project pipeline settings page. (!6955)
diff --git a/app/models/issue.rb b/app/models/issue.rb
index 133a5993815134fcc92d9d8c6160f8d38c1cdfe7..89158a50353da93e819c15d18d402c278a5161a4 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -211,7 +211,13 @@ class Issue < ActiveRecord::Base
       note.all_references(current_user, extractor: ext)
     end
 
-    ext.merge_requests.select { |mr| mr.open? && mr.closes_issue?(self) }
+    merge_requests = ext.merge_requests.select(&:open?)
+    if merge_requests.any?
+      ids = MergeRequestsClosingIssues.where(merge_request_id: merge_requests.map(&:id), issue_id: id).pluck(:merge_request_id)
+      merge_requests.select { |mr| mr.id.in?(ids) }
+    else
+      []
+    end
   end
 
   def moved?
diff --git a/spec/models/issue_spec.rb b/spec/models/issue_spec.rb
index 3b8b743af2d475c8136df5547f7f896edfe53b62..60d30eb74187ab4ac718c4cb74db0a65fad4d4eb 100644
--- a/spec/models/issue_spec.rb
+++ b/spec/models/issue_spec.rb
@@ -100,11 +100,17 @@ describe Issue, models: true do
     end
 
     it 'returns the merge request to close this issue' do
-      allow(mr).to receive(:closes_issue?).with(issue).and_return(true)
+      mr
 
       expect(issue.closed_by_merge_requests).to eq([mr])
     end
 
+    it "returns an empty array when the merge request is closed already" do
+      closed_mr
+
+      expect(issue.closed_by_merge_requests).to eq([])
+    end
+
     it "returns an empty array when the current issue is closed already" do
       expect(closed_issue.closed_by_merge_requests).to eq([])
     end