diff --git src/bp-members/bp-members-cache.php src/bp-members/bp-members-cache.php
index 4cfff86..9e44601 100644
--- src/bp-members/bp-members-cache.php
+++ src/bp-members/bp-members-cache.php
@@ -21,9 +21,15 @@ function bp_members_prefetch_member_type( BP_User_Query $bp_user_query ) {
 	) );
 
 	$cached_member_ids = array();
-	foreach ( $member_types as $member_type ) {
-		wp_cache_set( $member_type->object_id, $member_type->name, 'bp_member_type' );
-		$cached_member_ids[] = $member_type->object_id;
+
+	// First get an array of users
+	$user_ids = array_unique( wp_list_pluck( $member_types, 'object_id' ) );
+
+	// Then cache all different member types for a user
+	foreach ( $user_ids as $user_id ) {
+		$types = array_values( wp_filter_object_list( $member_types, array( 'object_id' => $user_id ), 'and', 'name' ) );
+		wp_cache_set( $user_id, $types, 'bp_member_type' );
+		$cached_member_ids[] = $user_id;
 	}
 
 	// Cache an empty value for users with no type.
