2013-02-22 50 views
0

我有这个代码自定义目录搜索包含搜索字符串数组:如何加快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的这些字段中设置索引,但没有更改。

回答

0

索引不会在您的查询中工作name,search_fieldsku属性!因为LIKE值以通配符(%)开头,并且只有以常量开始时索引才能工作。如果您从LIKE值中删除了前导%,那么您的查询速度会加快。

我不明白你为什么使用foreach?

+0

我对多个搜索字符串使用foreach。 $ searchNames是一个包含这些字符串的数组。 – s4lfish 2013-03-04 07:49:54