MySQL для организации по-страничного вывода

Апрель 25th, 2011

Для пейджинга нужно одновременно знать общее количество записей и выбрать только ограниченное их число. Часто это делалается двумя запросами, вначале count(*), а потом *, что омерзительно.

Правильно использовать опцию SQL_CALC_FOUND_ROWS:

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
    -> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html

Т.е. если выполнить вначале запрос с LIMIT, а потом SELECT FOUND_ROWS(), то можно получить оба значения за один поиск.