diff --git a/odoo/addons/base/models/res_partner.py b/odoo/addons/base/models/res_partner.py
index 9388aaa7a44c9148336f0a04122a717b14f1716e..e064986c73b54baf5b717c54abcb4d8a0ddac7b8 100644
--- a/odoo/addons/base/models/res_partner.py
+++ b/odoo/addons/base/models/res_partner.py
@@ -322,8 +322,13 @@ class Partner(models.Model):
     def _compute_avatar(self, avatar_field, image_field):
         partners_with_internal_user = self.filtered(lambda partner: partner.user_ids - partner.user_ids.filtered('share'))
         super(Partner, partners_with_internal_user)._compute_avatar(avatar_field, image_field)
-        for partner in self - partners_with_internal_user:
-            partner[avatar_field] = partner[image_field] or base64.b64encode(partner._avatar_get_placeholder())
+        partners_without_image = (self - partners_with_internal_user).filtered(lambda p: not p[image_field])
+        for _, group in tools.groupby(partners_without_image, key=lambda p: p._avatar_get_placeholder_path()):
+            group_partners = self.env['res.partner'].concat(*group)
+            group_partners[avatar_field] = base64.b64encode(group_partners[0]._avatar_get_placeholder())
+
+        for partner in self - partners_with_internal_user - partners_without_image:
+            partner[avatar_field] = partner[image_field]
 
     def _avatar_get_placeholder_path(self):
         if self.is_company: