Вопрос

У меня есть следующий код.

        $collection = Mage::getModel('catalog/product')->getCollection();
        $collection->addAttributeToSelect(array('featuredcategory','featured', 'price','name','small_image','frontend_name'));
        $collection->addFieldToFilter('type_id', 'configurable');

Это занимает около 5 секунд. Но когда я комментирую последнюю строку, т.е.

//$collection->addFieldToFilter('type_id', 'configurable');

Это занимает менее 1,5 секунд.

У меня включен плоский каталог.

Вопрос: Есть ли что -то не так с этой коллекцией?

Я использую Magento 1.6

Это было полезно?

Решение

Вопрос: Есть ли что -то не так с этой коллекцией?

Нет.

Если квартира включена

Я не уверен, как Magento проверяет, какие столбцы генерируются в плоской таблице. Может быть, type_id не является и должен быть соединением в плоский стол? Пожалуйста, проверьте запрос $collection->load(true) что делает Magento.

Если квартира не включена

Это не имеет смысла для меня. Колонка type_id это статический атрибут, означает, что он является частью базовой таблицы catalog_product_entity. Анкет Это должно быть очень быстро фильтровать по этому столбцу по сравнению с другими атрибутами.

Проблема в том, что в столбце нет указателя, поэтому MySQL должен сделать полное сканирование таблицы, но если на нем нет других фильтров, Magento получит все продукты, так что он также выполняет полное сканирование таблицы. Что вы можете попробовать, так это добавить индекс в столбце, если вам часто нужен этот запрос или он актуален.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top