Три части ответа, так что это должно стоить тройных очков, верно? :)
1) Возможно, потому что индексирование имеет тенденцию к вычислительной нагрузке, поэтому вместо того, чтобы замедлять работу сайта при сохранении продукта (обычно в рабочее время), администратор может выбрать период низкой загрузки или запланировать с помощью cron для индексирование происходит во время обычно низкой нагрузки.
2) Все продукты переиндексированы. Если вы заглянете в Mage_CatalogIndex_Model_Indexer :: plainReindex (), вы увидите, что он выполняет clear
, чтобы удалить все данные индекса, прежде чем все активные продукты будут проиндексированы.
$this->_getResource()->clear(
$attributeCodes,
$priceAttributeCodes,
count($priceAttributeCodes)>0,
count($priceAttributeCodes)>0,
count($priceAttributeCodes)>0,
$products,
$stores
);
<snip/>
$collection = $this->_getProductCollection($store, $products);
$collection->addAttributeToFilter(
'status',
array('in'=>Mage::getModel('catalog/product_status')->getSaleableStatusIds())
);
$this->_walkCollection($collection, $store, $attributeCodes);
где метод _walkCollection создает индекс для каждого продукта.
3) Вы можете включить Profiler. Есть несколько замечательных блогов постов о том, как их использовать. Вы можете обернуть код ключа в Mage_CatalogIndex_Model_Indexer
с помощью Varien_Profiler::start('Indexer')
и т. Д., Чтобы проверить время.