2013-02-22 49 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