diff -Nuar a/vendor/magento/module-catalog-import-export/Model/Import/Product/Option.php b/vendor/magento/module-catalog-import-export/Model/Import/Product/Option.php
index 7435c0bebfc..ddd8bf790b3 100644
--- a/vendor/magento/module-catalog-import-export/Model/Import/Product/Option.php
+++ b/vendor/magento/module-catalog-import-export/Model/Import/Product/Option.php
@@ -414,7 +414,7 @@ class Option extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
 
         $this->_initMessageTemplates();
 
-        $this->_initProductsSku()->_initOldCustomOptions();
+        $this->_initProductsSku();
     }
 
     /**
@@ -599,6 +599,9 @@ class Option extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
                     'option_title.store_id = ?',
                     $storeId
                 );
+                if (!empty($this->_newOptionsOldData)) {
+                    $this->_optionCollection->addProductToFilter(array_keys($this->_newOptionsOldData));
+                }
 
                 $this->_byPagesIterator->iterate($this->_optionCollection, $this->_pageSize, [$addCustomOptions]);
             }
@@ -608,6 +611,20 @@ class Option extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
     }
 
     /**
+     * Get existing custom options data
+     *
+     * @return array
+     */
+    private function getOldCustomOptions(): array
+    {
+        if ($this->_oldCustomOptions === null) {
+            $this->_initOldCustomOptions();
+        }
+
+        return $this->_oldCustomOptions;
+    }
+
+    /**
      * Imported entity type code getter
      *
      * @return string
@@ -703,9 +720,9 @@ class Option extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
         $errorRows = [];
         foreach ($this->_newOptionsOldData as $productId => $options) {
             foreach ($options as $outerData) {
-                if (isset($this->_oldCustomOptions[$productId])) {
+                if (isset($this->getOldCustomOptions()[$productId])) {
                     $optionsCount = 0;
-                    foreach ($this->_oldCustomOptions[$productId] as $innerData) {
+                    foreach ($this->getOldCustomOptions()[$productId] as $innerData) {
                         if (count($outerData['titles']) == count($innerData['titles'])) {
                             $outerTitles = $outerData['titles'];
                             $innerTitles = $innerData['titles'];
@@ -736,8 +753,8 @@ class Option extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
         $errorRows = [];
         foreach ($this->_newOptionsOldData as $productId => $options) {
             foreach ($options as $outerData) {
-                if (isset($this->_oldCustomOptions[$productId])) {
-                    foreach ($this->_oldCustomOptions[$productId] as $innerData) {
+                if (isset($this->getOldCustomOptions()[$productId])) {
+                    foreach ($this->getOldCustomOptions()[$productId] as $innerData) {
                         if (count($outerData['titles']) == count($innerData['titles'])) {
                             $outerTitles = $outerData['titles'];
                             $innerTitles = $innerData['titles'];
@@ -765,9 +782,9 @@ class Option extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
     protected function _findExistingOptionId(array $newOptionData, array $newOptionTitles)
     {
         $productId = $newOptionData['product_id'];
-        if (isset($this->_oldCustomOptions[$productId])) {
+        if (isset($this->getOldCustomOptions()[$productId])) {
             ksort($newOptionTitles);
-            $existingOptions = $this->_oldCustomOptions[$productId];
+            $existingOptions = $this->getOldCustomOptions()[$productId];
             foreach ($existingOptions as $optionId => $optionData) {
                 if ($optionData['type'] == $newOptionData['type']
                     && $optionData['titles'][Store::DEFAULT_STORE_ID] == $newOptionTitles[Store::DEFAULT_STORE_ID]
