diff --git a/app/code/Magento/Indexer/Console/Command/IndexerStatusMviewCommand.php b/app/code/Magento/Indexer/Console/Command/IndexerStatusMviewCommand.php
index 0efeef4a71be54f961850f5ce2bd688811506fd2..37caabc613e6671f53429538f5d3c0e3e3003838 100644
--- a/app/code/Magento/Indexer/Console/Command/IndexerStatusMviewCommand.php
+++ b/app/code/Magento/Indexer/Console/Command/IndexerStatusMviewCommand.php
@@ -61,7 +61,7 @@ class IndexerStatusMviewCommand extends Command
                     continue;
                 }
 
-                $pendingCount = count($changelog->getList($state->getVersionId(), $currentVersionId));
+                $pendingCount = $changelog->getListSize($state->getVersionId(), $currentVersionId);
 
                 $pendingString = "<error>$pendingCount</error>";
                 if ($pendingCount <= 0) {
diff --git a/app/code/Magento/Indexer/Test/Unit/Console/Command/IndexerStatusMviewCommandTest.php b/app/code/Magento/Indexer/Test/Unit/Console/Command/IndexerStatusMviewCommandTest.php
index 292adb55c5533ac7e3b533ab9cce72f93c7f6b33..4ae3ca83870e7e81c5611a9438d7133cedd170fc 100644
--- a/app/code/Magento/Indexer/Test/Unit/Console/Command/IndexerStatusMviewCommandTest.php
+++ b/app/code/Magento/Indexer/Test/Unit/Console/Command/IndexerStatusMviewCommandTest.php
@@ -176,14 +176,11 @@ class IndexerStatusMviewCommandTest extends \PHPUnit\Framework\TestCase
             ->disableOriginalConstructor()
             ->getMock();
 
-        $list = [];
-        if ($changelogData['version_id'] !== $stateData['version_id']) {
-            $list = range($stateData['version_id']+1, $changelogData['version_id']);
-        }
+        $listSize = $changelogData['version_id'] - $stateData['version_id'];
 
         $changelog->expects($this->any())
-            ->method('getList')
-            ->willReturn($list);
+            ->method('getListSize')
+            ->willReturn($listSize);
 
         $changelog->expects($this->any())
             ->method('getVersion')
diff --git a/lib/internal/Magento/Framework/Mview/View/Changelog.php b/lib/internal/Magento/Framework/Mview/View/Changelog.php
index 91caf662283601f0d8652afcf37b59d2d67f37b4..4f648d6b7d6aefb20be08bd5d4cde5021e5a2a89 100644
--- a/lib/internal/Magento/Framework/Mview/View/Changelog.php
+++ b/lib/internal/Magento/Framework/Mview/View/Changelog.php
@@ -127,14 +127,12 @@ class Changelog implements ChangelogInterface
     }
 
     /**
-     * Retrieve entity ids by range [$fromVersionId..$toVersionId]
-     *
      * @param int $fromVersionId
      * @param int $toVersionId
-     * @return int[]
+     * @return \Magento\Framework\DB\Select
      * @throws ChangelogTableNotExistsException
      */
-    public function getList($fromVersionId, $toVersionId)
+    protected function getListSelect($fromVersionId, $toVersionId)
     {
         $changelogTableName = $this->resource->getTableName($this->getName());
         if (!$this->connection->isTableExists($changelogTableName)) {
@@ -154,9 +152,39 @@ class Changelog implements ChangelogInterface
             (int)$toVersionId
         );
 
+        return $select;
+    }
+
+    /**
+     * Retrieve entity ids by range [$fromVersionId..$toVersionId]
+     *
+     * @param int $fromVersionId
+     * @param int $toVersionId
+     * @return int[]
+     * @throws ChangelogTableNotExistsException
+     */
+    public function getList($fromVersionId, $toVersionId)
+    {
+        $select = $this->getListSelect($fromVersionId, $toVersionId);
         return $this->connection->fetchCol($select);
     }
 
+    /**
+     * Retrieve the count of entity ids in the range [$fromVersionId..$toVersionId]
+     *
+     * @param int $fromVersionId
+     * @param int $toVersionId
+     * @return int[]
+     * @throws ChangelogTableNotExistsException
+     */
+    public function getListSize($fromVersionId, $toVersionId)
+    {
+        $countSelect = $this->getListSelect($fromVersionId, $toVersionId);
+        $countSelect->reset(\Magento\Framework\DB\Select::COLUMNS);
+        $countSelect->columns(new \Zend_Db_Expr(("COUNT(DISTINCT " . $this->getColumnName() . ")")));
+        return $this->connection->fetchOne($countSelect);
+    }
+
     /**
      * Get maximum version_id from changelog
      * @return int
diff --git a/lib/internal/Magento/Framework/Mview/View/ChangelogInterface.php b/lib/internal/Magento/Framework/Mview/View/ChangelogInterface.php
index b00c1ca3a2e33f80d87a94c133b8ba47637262e0..da115ecdb83eee0f616ad4708f577a8f0caa856e 100644
--- a/lib/internal/Magento/Framework/Mview/View/ChangelogInterface.php
+++ b/lib/internal/Magento/Framework/Mview/View/ChangelogInterface.php
@@ -42,6 +42,15 @@ interface ChangelogInterface
      */
     public function getList($fromVersionId, $toVersionId);
 
+    /**
+     * Retrieve the count of entity ids in the range [$fromVersionId..$toVersionId]
+     *
+     * @param $fromVersionId
+     * @param $toVersionId
+     * @return mixed
+     */
+    public function getListSize($fromVersionId, $toVersionId);
+
     /**
      * Get maximum version_id from changelog
      *