Zend Framework: нужен совет по реализации счетчика Zend_Paginator_Adapter () - PullRequest
0 голосов
/ 19 августа 2010

Я хочу реализовать свой собственный Zend_Paginator_Adapter, поэтому я реализовал Zend_Paginator_Adapter_Interface ( документы ). я сейчас на реализации count(). Могу ли я сказать, что если мой запрос

SELECT * FROM Posts LIMIT ... // where limit is for pagination purposes

мне нужно получить общее количество строк в таблице (для возврата в count())?

SELECT COUNT(*) FROM Posts

кажется неизбежным иметь 2 запроса? В моем текущем проекте меня не слишком беспокоит производительность, но необходимость в 2 запросах заставила меня задуматься, поэтому я просто хотел спросить здесь

1 Ответ

3 голосов
/ 19 августа 2010

Правильно ли я сказать ... чтобы получить общее количество строк в таблице (для возврата в count ())?
ВЫБЕРИТЕ СЧЕТЧИК (*) ИЗ ПОЛОЖЕНИЙ

Это, безусловно, один из способов получить результат, который вы ищете.Выполнение второго запроса не так уж и плохо, если ваша таблица / индексы оптимизированы.

Существует альтернатива.Вы можете включить выражение «SQL_CALC_FOUND_ROWS» в свой исходный запрос, тогда ваш второй запрос будет состоять только из:

«SELECT FOUND_ROWS ();»

См. Следующую ссылку для получения дополнительной информации об этомфункциональность: http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows

Конечно, это предполагает, что вы используете MySQL.

В моем текущем проекте меня не слишком беспокоит производительность, но необходимость в 2вопросы, только что заставили меня задуматься ...

Это, безусловно, серьезная проблема, особенно когда количество записей начинает увеличиваться.Что делает Zend_Paginator великолепным, так это тот факт, что вы можете внедрить экземпляр Zend_Cache_Core.Это гарантирует, что вы будете выполнять эти запросы только минимальное количество раз в зависимости от того, как долго будет храниться ваш кеш.

См. Следующую страницу для получения дополнительной информации о функциях кэширования: http://framework.zend.com/manual/en/zend.paginator.advanced.html#zend.paginator.advanced.caching

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...