Общее количество записей, возвращаемых запросом с LIMIT в MySQL
Для реализации пейджинга в веб-приложениях обычно необходимо узнать общее количество записей, возвращаемых определённым запросом.
Для некоторых баз данных для этого приходится делать ещё один запрос с COUNT()
В MySQL есть удобные встроенные средства.
Если в запрос добавить опцию SQL_CALC_FOUND_ROWS, а после запроса с LIMIT вызвать функцию FOUND_ROWS(), она вернёт общее количество
записей подходящих под предыдущий запрос.
mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name WHERE id > 100 LIMIT 10; mysql> SELECT FOUND_ROWS();
Кстати, именно этот подход используется в MySQL-драйвере библиотеке DbSimple при реализации
функции selectPage().
Оригинальная документация по MySQL об этой возможности
A
SELECTstatement may include aLIMITclause to restrict the number of rows the server returns to the client. In some cases, it is desirable to know how many rows the statement would have returned without the LIMIT, but without running the statement again. To obtain this row count, include aSQL_CALC_FOUND_ROWSoption in theSELECTstatement, and then invokeFOUND_ROWS()afterward.
