Постраничный вывод в один запрос?

2People

Новичок
Постраничный вывод в один запрос?

Можно ли сделать постраничный вывод в один запрос? Объединить эти две строки.

select count(*) FROM tbl where bib='1'

SELECT * FROM tbl where bib='1' order by bib limit $start,10

Тоесть, надо получить общее кол-во строк с bib='1' (чтобы определить кол-во страниц) и сразу вывести например limit 100,10
 

camka

не самка
Автор оригинала: trent
первым запросом
SELECT SQL_CALC_FOUND_ROWS * FROM tbl where bib='1' order by bib limit $start,10
а вторым ты получаешь сколько всего записей..
SELECT FOUND_ROWS();

http://dev.mysql.com/doc/mysql/en/information-functions.html
Этот способ тормозит в некоторых случаях, поскольку не используется оптимизация LIMIT.

http://dev.mysql.com/doc/mysql/en/limit-optimization.html
In some cases, MySQL handles a query differently when you are using LIMIT row_count and not using HAVING:

...

As soon as MySQL has sent the required number of rows to the client, it aborts the query unless you are using SQL_CALC_FOUND_ROWS.
-~{}~ 14.04.05 16:11:

Использование двух запросов, select * и select count(), чревато потерями в скорости при достаточно сложных запросах.


Поэтому стоит заранее проанализировать запрос и, в зависимости от этого, уже использовать подход с count() или SQL_CALC_FOUND_ROWS
 
Сверху