Джойка.ru - экспериментальная площадка | IT | СУБД MySQL | FOUND_ROWS(): Подсчёт общего количества строк выборки в mySQL при использовании LIMIT.

Последний изменённый пост
Статистика Revolvermaps
Друзья
dyadya-gad.ru
«О Гадах, гадких друзьях и тому подобной гадской ерунде»
Сайт о наших походах, с фотографиями.
danich.ru
Man, howto and random stuff
Вишлист
My Wishlist - djoa

Путь:

FOUND_ROWS(): Подсчёт общего количества строк выборки в mySQL при использовании LIMIT.

Создан: 2009-11-02, 10:20:57
Изменён: 2010-01-30, 22:13:21
Автор: djoa

Пример запросов:

Mysql> SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE column > 1 LIMIT 0, 50;
Mysql> SELECT FOUND_ROWS();

Здесь есть свои подводные камни. Об этом написана статья на хабре:
http://habrahabr.ru/blogs/mysql/64655/

И ещё момент.

Видела примеры использования наподобие:

$res = mysql_query('SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE column > 1 LIMIT 0, 50');

$data = array();
while($row = mysql_fetch_assoc($res))
	$data[] = $row;

$cnt = 0;
$res_cnt = mysql_query('SELECT FOUND_ROWS()');
list($cnt) = mysql_fetch_row($res_cnt);

Не понимаю, зачем обращаться к серверу дважды, если можно сделать так:

$res = mysql_query('SELECT * FROM table WHERE column > 1 LIMIT 0, 50');

$data = array();
while($row = mysql_fetch_assoc($res))
	$data[] = $row;

$cnt = count($data);

Понятно, что есть случаи, когда именно SELECT FOUND_ROWS() нужно использовать.
Но не в таких ситуациях, наверное.
Или я не права? Если не права — со временем будет возможность мне об этом написать. Пока нету. :ь

djoa, сен-2009 : now