Сильно ли замедляет загрузку страницы использование mysql_num_rows?

#php #mysql

#php #mysql

Вопрос:

Я создал классифицированный. В main/index.php страница, у меня есть много категорий, таких как автомобили, электроника, мебель .. и т.д., на которые вы нажимаете и получаете список доступных автомобилей или мобильных телефонов, которые вы можете купить в вашем городе.

Я подумываю добавить / показать количество объявлений, содержащихся в каждой категории, например: автомобили (74), электроника (32) и так далее..

использование, конечно, mysql_num_rows

Мой вопрос в том,> сделает ли это загрузку index.php страница медленнее? если да, то насколько медленно? миллисекунды, секунды, много?

Спасибо 🙂

ОБНОВИТЬ >> код:

 $query="select * FROM db_post WHERE cat='cars'";
$result= mysql_query($query);
$carnum=mysql_num_rows($result));

 <td class="car"> <li class="listclass"> <a href="city.php?cat=cars">CARS <?php echo "("."$carnum".")"; ?></a></li> </td> <?php echo  ?> 
  

Все, что мне нужно, это число. Есть ли разница между mysql_num_rows и SELECT COUNT (*) с точки зрения скорости?

Комментарии:

1. вы можете поделиться каким-нибудь кодом?

2. Я собираюсь навестить семью моего друга. Сколько времени потребуется, чтобы добраться туда — пара минут, несколько часов, неделя?

Ответ №1:

Было бы лучше всего кэшировать значения, если это возможно. На веб-сайте с низким уровнем использования вы не увидите большой разницы, но если добавить много пользователей, вам захочется кэшировать значения до тех пор, пока они не будут изменены.

Комментарии:

1. Ничего лучшего в кэшировании нет. Пока вы можете обходиться без кэша, у вас не будет головной боли.

Ответ №2:

Использование mysql_num_rows() само по себе не является медленным. Однако, если вы используете его, потому что (скажем) выбираете каждый продукт и отображаете количество совпадающих строк, это будет медленным! Если все, что вам нужно, это количество, заставьте базу данных выполнить подсчет с помощью запроса типа:

 SELECT COUNT(*) FROM ... WHERE ...
  

Если вам нужна куча подсчетов, используйте что-то вроде:

 SELECT ..., COUNT(*) FROM ... WHERE ... GROUP BY ...
  

В общем, постарайтесь уменьшить общее количество строк, возвращаемых SQL server для всей страницы, избегая ненужных запросов, возвращая неиспользуемые строки или загружая данные, когда резюме достаточно. Как правило, чем меньше возвращаемых строк, тем лучше!

Ответ №3:

Дело не в скорости «загрузки poage».
Это вопрос самых основ использования базы данных.
Основное правило таково:

Всегда выбирайте только те данные, которые вам нужны.

Если вам нужно только количество строк — выберите количество строк, а не строки, чтобы считать их после.
Уловил идею?

Создайте базу данных, чтобы выполнять как можно больше вычислений.

Ответ №4:

Я бы сделал что-то вроде select category_name, count( category_id ) from table group by category_id

В идеале вы хотели бы кэшировать эти результаты и запускать запрос каждую минуту или около того, если у вас много данных (много тысяч строк на базовом сервере) и много трафика (много тысяч обращений в день). Если у вас всего лишь сотни обращений в день, я бы не стал беспокоиться, так как ваше решение, вероятно, было бы прекрасным.