Skip to content

Commit eef93d0

Browse files
committed
MAGETWO-68808: catalog_product_attribute is slow
1 parent 999675a commit eef93d0

File tree

4 files changed

+8
-7
lines changed

4 files changed

+8
-7
lines changed

app/code/Magento/Catalog/Model/Indexer/Product/Eav/AbstractAction.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,12 +148,13 @@ protected function syncData($indexer, $destinationTable, $ids)
148148
* @param \Magento\Catalog\Model\ResourceModel\Product\Indexer\Eav\AbstractEav $indexer
149149
* @param array $ids
150150
*
151-
* @return $ids
151+
* @param bool $onlyParents
152+
* @return array $ids
152153
*/
153-
protected function processRelations($indexer, $ids)
154+
protected function processRelations($indexer, $ids, $onlyParents = false)
154155
{
155156
$parentIds = $indexer->getRelationsByChild($ids);
156-
$childIds = $indexer->getRelationsByParent($ids);
157+
$childIds = $onlyParents ? [] : $indexer->getRelationsByParent($ids);
157158
return array_unique(array_merge($ids, $childIds, $parentIds));
158159
}
159160
}

app/code/Magento/Catalog/Model/Indexer/Product/Eav/Action/Full.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public function execute($ids = null)
8383
$select->from(['e' => $entityMetadata->getEntityTable()], $entityMetadata->getIdentifierField());
8484
$entityIds = $this->batchProvider->getBatchIds($connection, $select, $batch);
8585
if (!empty($entityIds)) {
86-
$indexer->reindexEntities($this->processRelations($indexer, $entityIds));
86+
$indexer->reindexEntities($this->processRelations($indexer, $entityIds, true));
8787
$this->syncData($indexer, $mainTable);
8888
}
8989
}

app/code/Magento/Catalog/Model/ResourceModel/Product/Indexer/AbstractIndexer.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ public function getRelationsByChild($childIds)
196196
$childIds
197197
);
198198

199-
return $connection->fetchCol($select);
199+
return array_map('intval', (array) $connection->fetchCol($select));
200200
}
201201

202202
/**
@@ -228,7 +228,7 @@ public function getRelationsByParent($parentIds)
228228
$result = $connection->fetchCol($select);
229229
}
230230

231-
return $result;
231+
return array_map('intval', $result);
232232
}
233233

234234
/**

lib/internal/Magento/Framework/Indexer/BatchProvider.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public function getBatchIds(
5858
$connection->quote($batch['to'])
5959
);
6060

61-
$ids = $connection->fetchCol($select->where($betweenCondition));
61+
$ids = $connection->fetchCol($select->where($betweenCondition)->limit($batch['from'] - $batch['to'] + 1));
6262
return array_map('intval', $ids);
6363
}
6464
}

0 commit comments

Comments
 (0)