Об этой проблеме вас может заинтересовать этот раздел руководства: 39.2.2. Адаптер DbSelect и DbTableSelect , в котором указано (цитирование, выделено) :
... адаптеры базы данных требуют
более подробное объяснение.
В отличие от
Считается, что эти адаптеры не
получить все записи из базы данных в
чтобы посчитать их.
Вместо этого
адаптеры манипулируют оригиналом
запрос для получения соответствующего
COUNT
запрос.
Пагинатор затем выполняет
этот COUNT
запрос, чтобы получить количество
строк.
Это требует дополнительной
туда-обратно в базу данных, но это
во много раз быстрее, чем получение
весь набор результатов с использованием count()
.
Особенно с большими коллекциями
данные.
(на этой странице можно прочитать больше - и есть пример, который должен дать вам больше информации)
Идея состоит в том, что вы больше не будете сами получать все данные , но вы скажете Zend_Paginator
, какой адаптер он должен использовать для доступа к вашим данным.
Этот адаптер будет специфичен для " данных, которые выбираются с помощью SQL-запроса ", и будет знать, как разбить его на страницы непосредственно на стороне базы данных - что означает выбор только того, что требуется, а не все данные, которые вы изначально сделали.