Я не использую PDO для MySQL и PgSQL, но я использую для SQLite.Есть ли способ (без полного изменения обратного значения dbal) подсчитывать строки, подобные этой, в PDO?
В соответствии с этим комментарием проблема SQLite была вызвана изменением API в3.x.
Тем не менее, вы, возможно, захотите проверить, как PDO фактически реализует эту функциональность, прежде чем использовать ее.
Я не знаком с ее внутренними компонентами, но я бы с подозрением отнесся кМысль о том, что PDO анализирует ваш SQL (поскольку синтаксическая ошибка SQL появится в журналах БД), не говоря уже о том, чтобы попытаться осмыслить его, чтобы подсчитать строки с использованием оптимальной стратегии.
Предполагая, что это не такдействительно, реалистичные стратегии для него, чтобы он возвращал счетчик всех применимых строк в операторе select, включает в себя манипулирование строкой в предложении limit из вашего оператора SQL и любой из:
- Запуск select count ()на него как на подзапрос (таким образом, избегая проблемы, описанной вами в PS);
- Открытие курсора, запуск извлечения всех и подсчет строк;или
- Если сначала открыть такой курсор и аналогичным образом сосчитать оставшиеся строки.
Однако гораздо лучшим способом подсчета будет выполнение полностью оптимизированного запроса.это будет так.Чаще всего это означает переписывание значимых фрагментов исходного запроса, который вы пытаетесь разбить на страницы - удаление ненужных полей и порядка операций, и т. Д.
Наконец, если ваши наборы данных достаточно велики, что учитывает любыеВ некотором роде вы можете также захотеть исследовать возврат оценки, полученной из статистики , и / или периодическое кэширование результата в Memcache.В какой-то момент иметь точный счет уже бесполезно ...