diff --git a/core/serializers/subscription.py b/core/serializers/subscription.py
index adf3a54aff28a439fd0b4bec67d485c4395d3336..6509c7546196635f614ef9a6b19a4aa3f0f1f2ca 100644
--- a/core/serializers/subscription.py
+++ b/core/serializers/subscription.py
@@ -47,10 +47,7 @@ class SubscriptionSerializer(DynamicFieldsModelSerializer):
     available = serializers.SerializerMethodField()
 
     def get_assignments(self, subscription):
-        queryset = TutorSubmissionAssignment.objects.filter(
-            subscription=subscription,
-            is_done=False
-        )
+        queryset = subscription.assignments.filter(is_done=False)
         serializer = AssignmentDetailSerializer(queryset, many=True)
         return serializer.data
 
diff --git a/core/views/common_views.py b/core/views/common_views.py
index cb109ffc6bd344ceedd8efcea646511ab49311b8..8aed85b1e5e90870d6e1cd5412f25921cd85c8da 100644
--- a/core/views/common_views.py
+++ b/core/views/common_views.py
@@ -54,7 +54,13 @@ class StudentSelfSubmissionsApiView(generics.ListAPIView):
 class StudentReviewerApiViewSet(viewsets.ReadOnlyModelViewSet):
     """ Gets a list of all students without individual submissions """
     permission_classes = (IsReviewer,)
-    queryset = StudentInfo.objects.all()
+    queryset = StudentInfo.objects\
+        .select_related('user')\
+        .select_related('exam')\
+        .prefetch_related('submissions')\
+        .prefetch_related('submissions__feedback')\
+        .prefetch_related('submissions__type')\
+        .all()
     serializer_class = StudentInfoSerializerForListView
 
 
diff --git a/core/views/feedback.py b/core/views/feedback.py
index 1eb11a056e7f8fae24044e8616358cec9ca2b907..6735d1677cb50ad693a630b030ad1a827771adc0 100644
--- a/core/views/feedback.py
+++ b/core/views/feedback.py
@@ -16,7 +16,10 @@ class FeedbackApiView(
         viewsets.GenericViewSet):
     """ Gets a list of an individual exam by Id if provided """
     permission_classes = (permissions.IsTutorOrReviewer,)
-    queryset = models.Feedback.objects.all()
+    queryset = models.Feedback.objects\
+        .select_related('of_submission')\
+        .select_related('of_submission__type')\
+        .all()
     serializer_class = serializers.FeedbackSerializer
     lookup_field = 'of_submission__pk'
     lookup_url_kwarg = 'submission_pk'
@@ -69,10 +72,10 @@ class FeedbackApiView(
 
     def get_queryset(self):
         if self.request.user.is_reviewer():
-            return models.Feedback.objects.all()
+            return self.queryset.all()
         else:
             # only return feedback that the requesting user has worked on
-            return models.Feedback.objects.filter(
+            return self.queryset.filter(
                 of_submission__assignments__subscription__owner=self.request.user  # noqa
             )
 
diff --git a/core/views/subscription.py b/core/views/subscription.py
index 2e00c5cac40596eeb3359b42dc159e70639e90bf..25ebafb9f5f685e6c340aba4b788b719dcd75375 100644
--- a/core/views/subscription.py
+++ b/core/views/subscription.py
@@ -20,9 +20,12 @@ class SubscriptionApiViewSet(
         viewsets.GenericViewSet):
     permission_classes = (permissions.IsTutorOrReviewer,)
     serializer_class = serializers.SubscriptionSerializer
+    queryset = models.SubmissionSubscription.objects\
+        .prefetch_related('assignments')\
+        .select_related('owner')
 
     def get_queryset(self):
-        return models.SubmissionSubscription.objects.filter(
+        return self.queryset.filter(
             owner=self.request.user,
             deactivated=False
         )