我必须写一些查询以在我的主页上显示特定产品。但是,这些异常长,需要缓存。
这是从我的主页完成查询的示例:
$bogof = Mage::getModel('catalog/product')
->addAttributeToSelect('*')
->addAttributeToFilter('status',1)
->addAttributeToFilter('promocode',10)
->addAttributeToFilter('visibility',array('neq' => 1));
$bogof->getSelect()->order('rand()');
$bogof = $bogof->getFirstItem();
正如你所看到的,我需要那些随机产品需要很长时间。
此查询基本上从magento_catalog_product_entity,magento_catalog_product_entity_int和magento_catalog_product_entity_varchar通过6个连接获取信息。
我注意到在类别页面上,Magento从magento_catalog_product_entity,magento_catalog_category_product_index,magento_catalog_product_index_price和magento_cataloginventory_stock_item获取信息,这比加入6次快得多
如何使用相同类型的查询来获取我的产品?我试图使用ResourceModel但没有任何成功。
提前致谢。
(请原谅我的英文)
答案 0 :(得分:3)
产品索引不会提高性能。
一些提高绩效的建议: 首先,不要选择所有属性。只获取您真正需要的属性(它是关于addAttributeToSelect('*')) 下一个。看起来您需要第2行,第3行,第4行和第5行中的addAttributeToFilter方法。它将减少集合大小,集合将占用更少的内存。 使用缓存和延迟加载。