Zend Paginator Limit Row (Оптимизация)
Это мой запрос:
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 строк из результата, а не все?
1 ответ
Решение
С DbSelect
Адаптер делает запрос только 10 строк. Профилируйте ваши запросы и проверяйте - вы должны увидеть 2 выбора AFAIR - один управляется ZF для получения общего количества строк, а другой - для получения фактических данных с помощью LIMIT
а также OFFSET
,