diff --git a/reviewboard/reviews/models/review_request.py b/reviewboard/reviews/models/review_request.py
index 9ad3845dc4372b50b9df36efa6dbbbe243c79bf2..c42ad9afdd6528ae7354c554e6daf1906d09fa49 100644
--- a/reviewboard/reviews/models/review_request.py
+++ b/reviewboard/reviews/models/review_request.py
@@ -13,7 +13,7 @@ from djblets.db.query import get_object_or_none
 
 from reviewboard.attachments.models import FileAttachment
 from reviewboard.changedescs.models import ChangeDescription
-from reviewboard.diffviewer.models import DiffSet, DiffSetHistory, FileDiff
+from reviewboard.diffviewer.models import DiffSet, DiffSetHistory
 from reviewboard.reviews.errors import PermissionError
 from reviewboard.reviews.managers import ReviewRequestManager
 from reviewboard.reviews.models.base_comment import BaseComment
@@ -526,12 +526,6 @@ class ReviewRequest(BaseReviewRequestDetails):
 
         return self._diffsets
 
-    def get_all_diff_filenames(self):
-        """Returns a set of filenames from files in all diffsets."""
-        q = FileDiff.objects.filter(
-            diffset__history__id=self.diffset_history_id)
-        return set(q.values_list('source_file', 'dest_file'))
-
     def get_latest_diffset(self):
         """Returns the latest diffset for this review request."""
         try:
diff --git a/reviewboard/reviews/search_indexes.py b/reviewboard/reviews/search_indexes.py
index 6386cfb634d9ce5bebe1ad49049111ddaeed7bc8..4b893a7475ea434f5a6115ae7649366147384cd9 100644
--- a/reviewboard/reviews/search_indexes.py
+++ b/reviewboard/reviews/search_indexes.py
@@ -20,7 +20,7 @@ class ReviewRequestIndex(indexes.SearchIndex, indexes.Indexable):
     bug = indexes.CharField(model_attr='bugs_closed')
     username = indexes.CharField(model_attr='submitter__username')
     author = indexes.CharField(model_attr='submitter__get_full_name')
-    file = indexes.CharField(model_attr='get_all_diff_filenames')
+    file = indexes.CharField()
 
     def get_model(self):
         """Returns the Django model for this index."""
@@ -28,6 +28,18 @@ class ReviewRequestIndex(indexes.SearchIndex, indexes.Indexable):
 
     def index_queryset(self, using=None):
         """Index only public pending and submitted review requests."""
-        return self.get_model().objects.public(
+        queryset = self.get_model().objects.public(
             status=None,
             extra_query=Q(status='P') | Q(status='S'))
+        queryset = queryset.select_related('submitter', 'diffset_history')
+        queryset = queryset.prefetch_related(
+            'diffset_history__diffsets__files')
+
+        return queryset
+
+    def prepare_file(self, obj):
+        return set([
+            (filediff.source_file, filediff.dest_file)
+            for diffset in obj.diffset_history.diffsets.all()
+            for filediff in diffset.files.all()
+        ])
