0

これは私の質問です:

class services extends Zend_Db_Table{

 function Get_Services($user_id){
    $DB = Zend_Db_Table_Abstract::getDefaultAdapter();

    $select = $DB->select()
                ->from(array('p' => 'phone_service'))
                ->join(array('u' => 'user_preferences'), 'u.phone_service_id = p.phone_service_id')
                ->where('u.user_preferences_name = ?', 'is_user_package_active')
                ->where('p.user_id = ?', $user_id);
           return $select;
    }
  }

これは私のコントローラーです:

class ServicesController extends Zend_Controller_Action{
       $instance = new services();
       $select = $instance->Get_Services($user_id);

       $adapter   = new Zend_Paginator_Adapter_DbSelect($select);
       $paginator = new Zend_Paginator($adapter);

       $page=$this->_getParam('page',1);
       $paginator->setItemCountPerPage(10);
       $paginator->setCurrentPageNumber($page);
       $paginator->setPagerange(5);
 }

私がしていることは、最初にすべての行を照会してから、これを実行することです。

 $adapter   = new Zend_Paginator_Adapter_DbSelect($select);
 $paginator = new Zend_Paginator($adapter);

私の質問は、結果から10行だけをクエリし、すべてではないように最適化するにはどうすればよいですか?

4

1 に答える 1

1

DbSelectアダプタを使用すると、10行のみをクエリします。クエリのプロファイルを作成して検査します。2つはAFAIRを選択します。1つはZFによって操作されて行の総数を取得し、もう1つはとで実際のデータを取得しLIMITますOFFSET

于 2012-04-04T10:52:38.547 に答える