diff --git a/app/code/Magento/Catalog/Model/CategoryLinkManagement.php b/app/code/Magento/Catalog/Model/CategoryLinkManagement.php
index 0c2c324bd8e2c931b57babe59147837b4feb193b..f0405be462161bcdddc4a7ee86fe5ac1de96f641 100644
--- a/app/code/Magento/Catalog/Model/CategoryLinkManagement.php
+++ b/app/code/Magento/Catalog/Model/CategoryLinkManagement.php
@@ -36,10 +36,10 @@ class CategoryLinkManagement implements \Magento\Catalog\Api\CategoryLinkManagem
     public function getAssignedProducts($categoryId)
     {
         $category = $this->categoryRepository->get($categoryId);
-        $productsPosition = $category->getProductsPosition();
 
-        /** @var \Magento\Framework\Data\Collection\AbstractDb $products */
+        /** @var \Magento\Catalog\Model\ResourceModel\Product\Collection $products */
         $products = $category->getProductCollection();
+        $products->addFieldToSelect('position');
 
         /** @var \Magento\Catalog\Api\Data\CategoryProductLinkInterface[] $links */
         $links = [];
@@ -49,7 +49,7 @@ class CategoryLinkManagement implements \Magento\Catalog\Api\CategoryLinkManagem
             /** @var \Magento\Catalog\Api\Data\CategoryProductLinkInterface $link */
             $link = $this->productLinkFactory->create();
             $link->setSku($product->getSku())
-                ->setPosition($productsPosition[$productId])
+                ->setPosition($product->getData('cat_index_position'))
                 ->setCategoryId($category->getId());
             $links[] = $link;
         }
diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Category/Flat.php b/app/code/Magento/Catalog/Model/ResourceModel/Category/Flat.php
index 089bfbc10e01a48af44078632e6641ede00c58fd..7c0545468781c3f22f75205e8dca4c181b462fbe 100644
--- a/app/code/Magento/Catalog/Model/ResourceModel/Category/Flat.php
+++ b/app/code/Magento/Catalog/Model/ResourceModel/Category/Flat.php
@@ -671,4 +671,23 @@ class Flat extends \Magento\Indexer\Model\ResourceModel\AbstractResource
 
         return $this->getConnection()->fetchCol($select);
     }
+
+    /**
+     * Get positions of associated to category products
+     *
+     * @param \Magento\Catalog\Model\Category $category
+     * @return array
+     */
+    public function getProductsPosition($category)
+    {
+        $select = $this->getConnection()->select()->from(
+            $this->getTable('catalog_category_product'),
+            ['product_id', 'position']
+        )->where(
+            'category_id = :category_id'
+        );
+        $bind = ['category_id' => (int)$category->getId()];
+
+        return $this->getConnection()->fetchPairs($select, $bind);
+    }
 }