Эти адаптеры не извлекают все записи из базы данных для того, чтобы посчитать их. Вместо этого адаптеры используют исходный запрос для получения соответствующего COUNT-запроса, этот запрос выполняется для получения общего количества строк. Таким образом, производится еще один дополнительный запрос к базе данных, но это во много раз быстрее, чем извлечение всего результата и использование count(), особенно в случае больших объемов данных.
$adapter = new Zend_Paginator_Adapter_DbSelect($db->select()->from('posts'));
$adapter->setRowCount(
$db->select()
->from(
'item_counts',
array(
Zend_Paginator_Adapter_DbSelect::ROW_COUNT_COLUMN => 'post_count'
)
)
);