diff --git a/app/assets/javascripts/merge_request_dashboard/components/merge_requests_query.vue b/app/assets/javascripts/merge_request_dashboard/components/merge_requests_query.vue
index 573b7afcf325a1a0e08ef6f90f080644472cabba..34761f9d04685f02c98056b72e336051d7e703b8 100644
--- a/app/assets/javascripts/merge_request_dashboard/components/merge_requests_query.vue
+++ b/app/assets/javascripts/merge_request_dashboard/components/merge_requests_query.vue
@@ -1,21 +1,27 @@
 <script>
 import reviewerQuery from '../queries/reviewer.query.graphql';
+import reviewerCountQuery from '../queries/reviewer_count.query.graphql';
 import assigneeQuery from '../queries/assignee.query.graphql';
+import assigneeCountQuery from '../queries/assignee_count.query.graphql';
 import assigneeOrReviewerQuery from '../queries/assignee_or_reviewer.query.graphql';
+import assigneeOrReviewerCountQuery from '../queries/assignee_or_reviewer_count.query.graphql';
 
 const PER_PAGE = 20;
 
 const QUERIES = {
-  reviewRequestedMergeRequests: reviewerQuery,
-  assignedMergeRequests: assigneeQuery,
-  assigneeOrReviewerMergeRequests: assigneeOrReviewerQuery,
+  reviewRequestedMergeRequests: { dataQuery: reviewerQuery, countQuery: reviewerCountQuery },
+  assignedMergeRequests: { dataQuery: assigneeQuery, countQuery: assigneeCountQuery },
+  assigneeOrReviewerMergeRequests: {
+    dataQuery: assigneeOrReviewerQuery,
+    countQuery: assigneeOrReviewerCountQuery,
+  },
 };
 
 export default {
   apollo: {
     mergeRequests: {
       query() {
-        return QUERIES[this.query];
+        return QUERIES[this.query].dataQuery;
       },
       update(d) {
         return d.currentUser?.mergeRequests || {};
@@ -30,6 +36,20 @@ export default {
         this.error = true;
       },
     },
+    count: {
+      query() {
+        return QUERIES[this.query].countQuery;
+      },
+      update(d) {
+        return d.currentUser?.mergeRequests?.count;
+      },
+      variables() {
+        return {
+          ...this.variables,
+          perPage: PER_PAGE,
+        };
+      },
+    },
   },
   props: {
     query: {
@@ -44,6 +64,7 @@ export default {
   data() {
     return {
       mergeRequests: null,
+      count: null,
       error: false,
     };
   },
@@ -69,7 +90,7 @@ export default {
   render() {
     return this.$scopedSlots.default({
       mergeRequests: this.mergeRequests?.nodes || [],
-      count: this.mergeRequests ? this.mergeRequests.count : null,
+      count: this.count,
       hasNextPage: this.hasNextPage,
       loadMore: this.loadMore,
       loading: this.isLoading,
diff --git a/app/assets/javascripts/merge_request_dashboard/queries/assignee.query.graphql b/app/assets/javascripts/merge_request_dashboard/queries/assignee.query.graphql
index 25dc21a07b271f67f798df7b8faba9d3dc57d728..e7361721e649b541f0093e959b772fb280bafe91 100644
--- a/app/assets/javascripts/merge_request_dashboard/queries/assignee.query.graphql
+++ b/app/assets/javascripts/merge_request_dashboard/queries/assignee.query.graphql
@@ -22,7 +22,6 @@ query requestingReview(
       after: $afterCursor
       sort: UPDATED_DESC
     ) {
-      count
       pageInfo {
         ...PageInfo
       }
diff --git a/app/assets/javascripts/merge_request_dashboard/queries/assignee_count.query.graphql b/app/assets/javascripts/merge_request_dashboard/queries/assignee_count.query.graphql
new file mode 100644
index 0000000000000000000000000000000000000000..d533a157a486fa37b1f1bc856ce5e8015a797145
--- /dev/null
+++ b/app/assets/javascripts/merge_request_dashboard/queries/assignee_count.query.graphql
@@ -0,0 +1,20 @@
+query requestingReviewCount(
+  $state: MergeRequestState = opened
+  $reviewState: MergeRequestReviewState
+  $reviewStates: [MergeRequestReviewState!]
+  $reviewerWildcardId: ReviewerWildcardId
+  $mergedAfter: Time
+) {
+  currentUser {
+    id
+    mergeRequests: assignedMergeRequests(
+      state: $state
+      reviewState: $reviewState
+      reviewStates: $reviewStates
+      reviewerWildcardId: $reviewerWildcardId
+      mergedAfter: $mergedAfter
+    ) {
+      count
+    }
+  }
+}
diff --git a/app/assets/javascripts/merge_request_dashboard/queries/assignee_or_reviewer.query.graphql b/app/assets/javascripts/merge_request_dashboard/queries/assignee_or_reviewer.query.graphql
index 5a743656a194c42ed0919c35331dc439b23c5010..a0b65e70867d136bac4bb9508d626adce46445db 100644
--- a/app/assets/javascripts/merge_request_dashboard/queries/assignee_or_reviewer.query.graphql
+++ b/app/assets/javascripts/merge_request_dashboard/queries/assignee_or_reviewer.query.graphql
@@ -20,7 +20,6 @@ query assigneeOrReviewer(
       after: $afterCursor
       sort: UPDATED_DESC
     ) {
-      count
       pageInfo {
         ...PageInfo
       }
diff --git a/app/assets/javascripts/merge_request_dashboard/queries/assignee_or_reviewer_count.query.graphql b/app/assets/javascripts/merge_request_dashboard/queries/assignee_or_reviewer_count.query.graphql
new file mode 100644
index 0000000000000000000000000000000000000000..c27f0a159fb40eb13b2707e0b73e14e0a99677cb
--- /dev/null
+++ b/app/assets/javascripts/merge_request_dashboard/queries/assignee_or_reviewer_count.query.graphql
@@ -0,0 +1,18 @@
+query assigneeOrReviewerCount(
+  $state: MergeRequestState = opened
+  $assignedReviewStates: [MergeRequestReviewState!]
+  $reviewerReviewStates: [MergeRequestReviewState!]
+  $mergedAfter: Time
+) {
+  currentUser {
+    id
+    mergeRequests: assigneeOrReviewerMergeRequests(
+      state: $state
+      assignedReviewStates: $assignedReviewStates
+      reviewerReviewStates: $reviewerReviewStates
+      mergedAfter: $mergedAfter
+    ) {
+      count
+    }
+  }
+}
diff --git a/app/assets/javascripts/merge_request_dashboard/queries/reviewer.query.graphql b/app/assets/javascripts/merge_request_dashboard/queries/reviewer.query.graphql
index fbdfcb46c06f1afdbfe40b4d8ff72b31cb9e7167..e0c74ffed5acd30c3b7334b5ae9ae094156f0069 100644
--- a/app/assets/javascripts/merge_request_dashboard/queries/reviewer.query.graphql
+++ b/app/assets/javascripts/merge_request_dashboard/queries/reviewer.query.graphql
@@ -20,7 +20,6 @@ query reviewRequests(
       after: $afterCursor
       sort: UPDATED_DESC
     ) {
-      count
       pageInfo {
         ...PageInfo
       }
diff --git a/app/assets/javascripts/merge_request_dashboard/queries/reviewer_count.query.graphql b/app/assets/javascripts/merge_request_dashboard/queries/reviewer_count.query.graphql
new file mode 100644
index 0000000000000000000000000000000000000000..c7232688c8dd09ce3192044af7223c7d6688156b
--- /dev/null
+++ b/app/assets/javascripts/merge_request_dashboard/queries/reviewer_count.query.graphql
@@ -0,0 +1,18 @@
+query reviewRequestsCount(
+  $state: MergeRequestState = opened
+  $reviewState: MergeRequestReviewState
+  $reviewStates: [MergeRequestReviewState!]
+  $mergedAfter: Time
+) {
+  currentUser {
+    id
+    mergeRequests: reviewRequestedMergeRequests(
+      state: $state
+      reviewState: $reviewState
+      reviewStates: $reviewStates
+      mergedAfter: $mergedAfter
+    ) {
+      count
+    }
+  }
+}
diff --git a/spec/frontend/merge_request_dashboard/components/app_spec.js b/spec/frontend/merge_request_dashboard/components/app_spec.js
index cbd98607e26ea13877f5a7d51b88c2837b11cdd9..81e0b97363a426b9d4bfce2b73b5a142bff79a54 100644
--- a/spec/frontend/merge_request_dashboard/components/app_spec.js
+++ b/spec/frontend/merge_request_dashboard/components/app_spec.js
@@ -8,6 +8,7 @@ import MergeRequestsQuery from '~/merge_request_dashboard/components/merge_reque
 import CollapsibleSection from '~/merge_request_dashboard/components/collapsible_section.vue';
 import MergeRequest from '~/merge_request_dashboard/components/merge_request.vue';
 import assigneeQuery from '~/merge_request_dashboard/queries/assignee.query.graphql';
+import assigneeCountQuery from '~/merge_request_dashboard/queries/assignee_count.query.graphql';
 import { createMockMergeRequest } from '../mock_data';
 
 Vue.use(VueApollo);
@@ -27,7 +28,6 @@ describe('Merge requests app component', () => {
         currentUser: {
           id: 1,
           mergeRequests: {
-            count: 1,
             pageInfo: {
               hasNextPage: true,
               hasPreviousPage: false,
@@ -41,7 +41,22 @@ describe('Merge requests app component', () => {
       },
     });
     const apolloProvider = createMockApollo(
-      [[assigneeQuery, assigneeQueryMock]],
+      [
+        [assigneeQuery, assigneeQueryMock],
+        [
+          assigneeCountQuery,
+          jest.fn().mockResolvedValue({
+            data: {
+              currentUser: {
+                id: 1,
+                mergeRequests: {
+                  count: 1,
+                },
+              },
+            },
+          }),
+        ],
+      ],
       {},
       { typePolicies: { Query: { fields: { currentUser: { merge: false } } } } },
     );
diff --git a/spec/frontend/merge_request_dashboard/components/merge_requests_query_spec.js b/spec/frontend/merge_request_dashboard/components/merge_requests_query_spec.js
index 4b1fc388c9b848d91298d947b756c2690eefb803..99cf15c0bab2707762aa50fd3b0f84a88dd9d495 100644
--- a/spec/frontend/merge_request_dashboard/components/merge_requests_query_spec.js
+++ b/spec/frontend/merge_request_dashboard/components/merge_requests_query_spec.js
@@ -5,7 +5,9 @@ import createMockApollo from 'helpers/mock_apollo_helper';
 import waitForPromises from 'helpers/wait_for_promises';
 import MergeRequestQuery from '~/merge_request_dashboard/components/merge_requests_query.vue';
 import reviewerQuery from '~/merge_request_dashboard/queries/reviewer.query.graphql';
+import reviewerCountQuery from '~/merge_request_dashboard/queries/reviewer_count.query.graphql';
 import assigneeQuery from '~/merge_request_dashboard/queries/assignee.query.graphql';
+import assigneeCountQuery from '~/merge_request_dashboard/queries/assignee_count.query.graphql';
 import { createMockMergeRequest } from '../mock_data';
 
 Vue.use(VueApollo);
@@ -23,7 +25,6 @@ describe('Merge requests query component', () => {
         currentUser: {
           id: 1,
           mergeRequests: {
-            count: 0,
             pageInfo: {
               __typename: 'PageInfo',
               hasNextPage: false,
@@ -41,7 +42,6 @@ describe('Merge requests query component', () => {
         currentUser: {
           id: 1,
           mergeRequests: {
-            count: 0,
             pageInfo: {
               hasNextPage: false,
               hasPreviousPage: false,
@@ -54,10 +54,26 @@ describe('Merge requests query component', () => {
         },
       },
     });
-    const apolloProvider = createMockApollo([
-      [reviewerQuery, reviewerQueryMock],
-      [assigneeQuery, assigneeQueryMock],
-    ]);
+    const apolloProvider = createMockApollo(
+      [
+        [reviewerQuery, reviewerQueryMock],
+        [assigneeQuery, assigneeQueryMock],
+        [
+          reviewerCountQuery,
+          jest
+            .fn()
+            .mockResolvedValue({ data: { currentUser: { id: 1, mergeRequests: { count: 1 } } } }),
+        ],
+        [
+          assigneeCountQuery,
+          jest
+            .fn()
+            .mockResolvedValue({ data: { currentUser: { id: 1, mergeRequests: { count: 1 } } } }),
+        ],
+      ],
+      {},
+      { typePolicies: { Query: { fields: { currentUser: { merge: false } } } } },
+    );
 
     slotSpy = jest.fn();