Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Какой самый быстрый способ узнать количество записей
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Какой самый быстрый способ узнать количество записей

Страниц (1): [1]
 

1. LifePlay - 15 Февраля, 2011 - 09:43:14 - перейти к сообщению
Какой самый быстрый способ узнать количество записей с базы данных?


Пользовался



щас вот нашол быстрее.

PHP:
скопировать код в буфер обмена
  1. $all = mysql_fetch_row(mysql_query('SELECT COUNT(`id`) FROM `cat_gb`'));
  2. $all = $all[0];


А есть ещё быстрее?
2. DeepVarvar - 15 Февраля, 2011 - 09:48:34 - перейти к сообщению
Быстрее второго нет
3. LifePlay - 15 Февраля, 2011 - 10:24:12 - перейти к сообщению
Буду знать. Улыбка
4. Uchkuma - 15 Февраля, 2011 - 11:00:49 - перейти к сообщению
Если целиком без условий выборки, то COUNT(*). Иначе mysql_num_rows.

То есть в последнем случае без разницы, но выгоднее одновременно с выборкой других данных.
5. Мелкий - 15 Февраля, 2011 - 11:05:42 - перейти к сообщению
Uchkuma, вы не правы. count по определению будет быстрее и эффективнее, чем читать все строки чтобы только узнать их количество. И count считается уже после наложения всех условий.
6. Uchkuma - 15 Февраля, 2011 - 11:12:45 - перейти к сообщению
Мелкий пишет:
count по определению будет быстрее и эффективнее
В целом да. А для подсчета строк не надо перебирать все строки? В общем, как я уже сказал, это выгодно только когда помимо подсчета также есть и выборка данных.
Мелкий пишет:
И count считается уже после наложения всех условий.
Да. Но при выборке без условий он и вовсе не считается, т.к. значение количества всех строк уже хранится в базе. Поэтому этот вариант самый скоростной.
7. Мелкий - 15 Февраля, 2011 - 11:31:02 - перейти к сообщению
Uchkuma пишет:
А для подсчета строк не надо перебирать все строки?

Если есть подходящие индексы - таки не надо. Ну и count проще подпадает под кэширование запросов, т.к. возвращает всего ничего информации. Или он из некэшируемых? Однако

Собственно, если нужны и сами данные, вместе с количеством строк - то тогда без вариантов mysql_num_rows, т.к. удобнее и более структурировано выходит.

 

Powered by ExBB FM 1.0 RC1