我使用此代码对包含搜索字符串的数组进行自定义目录搜索:
$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中为这些字段设置了索引,但没有变化。
答案 0 :(得分:0)
索引不适用于name
,search_field
和sku
属性的查询!因为LIKE值以通配符(%)开头,索引只能以常量开头才能工作。如果从LIKE值中删除前导%
,您的查询将会加快。
我不明白你为什么要使用foreach?