diff --git a/vendor/magento/module-quote/Model/ResourceModel/Quote/Item/Collection.php b/vendor/magento/module-quote/Model/ResourceModel/Quote/Item/Collection.php
index 6e27625283bec..71e7cf0d72de1 100644
--- a/vendor/magento/module-quote/Model/ResourceModel/Quote/Item/Collection.php
+++ b/vendor/magento/module-quote/Model/ResourceModel/Quote/Item/Collection.php
@@ -393,12 +393,13 @@ private function removeItemsWithAbsentProducts(): void
         $productCollection = $this->_productCollectionFactory->create()->addIdFilter($this->_productIds);
         $existingProductsIds = $productCollection->getAllIds();
         $absentProductsIds = array_unique(array_diff($this->_productIds, $existingProductsIds));
-        // Remove not existing products from items collection
         if (!empty($absentProductsIds)) {
-            foreach ($absentProductsIds as $productIdToExclude) {
-                /** @var \Magento\Quote\Model\Quote\Item $quoteItem */
-                $quoteItem = $this->getItemByColumnValue('product_id', $productIdToExclude);
-                $this->removeItemByKey($quoteItem->getId());
+            $absentProductsLookup = array_flip($absentProductsIds);
+            $quoteItems = $this->getItems();
+            foreach ($quoteItems as $quoteItem) {
+                if (isset($absentProductsLookup[(int)$quoteItem->getProductId()])) {
+                    $this->removeItemByKey($quoteItem->getId());
+                }
             }
         }
     }
