如何加快Magento的1.7收藏
问题描述:
我有这个代码自定义目录搜索包含搜索字符串数组:如何加快Magento的1.7收藏
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('visibility', $visibility);
foreach($searchNames as $searchName){
$collection->addAttributeToFilter(array(
array('attribute'=> 'name','like' => '%'.$searchName.'%'),
array('attribute'=> 'search_field','like' => '%'.$searchName.'%'),
array('attribute'=> 'sku','like' => '%'.$searchName.'%')));
}
当我拿到〜6K结果的搜索大约需要5秒钟。有没有办法加快这一点? 也许有一些性能调整我没有找到。
我已经在表catalog_product_flat的这些字段中设置索引,但没有更改。
答
索引不会在您的查询中工作name
,search_field
和sku
属性!因为LIKE值以通配符(%)开头,并且只有以常量开始时索引才能工作。如果您从LIKE值中删除了前导%
,那么您的查询速度会加快。
我不明白你为什么使用foreach?
我对多个搜索字符串使用foreach。 $ searchNames是一个包含这些字符串的数组。 – s4lfish 2013-03-04 07:49:54