diff --git a/vendor/magento/module-product-alert/Model/Mailing/AlertProcessor.php b/vendor/magento/module-product-alert/Model/Mailing/AlertProcessor.php
index 105fb6ac372..988e5e91e1e 100644
--- a/vendor/magento/module-product-alert/Model/Mailing/AlertProcessor.php
+++ b/vendor/magento/module-product-alert/Model/Mailing/AlertProcessor.php
@@ -155,6 +155,7 @@ class AlertProcessor
      * @param int $websiteId
      * @return array
      * @throws \Exception
+     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
     private function processAlerts(string $alertType, array $customerIds, int $websiteId): array
     {
@@ -182,6 +183,7 @@ class AlertProcessor
         /** @var Website $website */
         $website = $this->storeManager->getWebsite($websiteId);
         $defaultStoreId = $website->getDefaultStore()->getId();
+        $products = [];
 
         /** @var Price|Stock $alert */
         foreach ($collection as $alert) {
@@ -196,7 +198,12 @@ class AlertProcessor
                     $customer = $this->customerRepository->getById($alert->getCustomerId());
                 }
 
-                $product = $this->productRepository->getById($alert->getProductId(), false, $defaultStoreId);
+                if (!isset($products[$alert->getProductId()])) {
+                    $product = $this->productRepository->getById($alert->getProductId(), false, $defaultStoreId, true);
+                    $products[$alert->getProductId()] = $product;
+                } else {
+                    $product = $products[$alert->getProductId()];
+                }
 
                 switch ($alertType) {
                     case self::ALERT_TYPE_STOCK:
