Будет ли изменение нагрузки на БД и сайт?

Работаю с php+mysql.
Нужно выбирать записи из БД за определенный промежуток времени (с даты - по дату). Причем выводить каждую n-нную запись.
В среднем выводится 100.000 записей.

Раньше было заранее известно какую по счету запись выводить. например, каждую вторую.
$mysqli_request="SELECT * FROM `table` WHERE `time`>'$my_time' AND id % 2 = 1";


Сейчас не известно.
И чтобы узнать, мне нужно узнать количество записей за выбранный промежуток времени. И только потом выбрать нужные мне данные.
//Сколько существует записей в БД за этот промежуток времени?
$mysqli_request="SELECT  `id` FROM `table` WHERE `time`>'$my_time'"; //Нам всё не надо, достаточно ведь id?
$mysqli_result=$mysqli->query($mysqli_request) or die ($mysqli->error);
$num_rows = $mysqli_result->num_rows; //Кол-во строк т.е. записей за промежуток времени

$every_rec=1;
//Если больше 100 - выбираем каждую вторую
if ($num_rows>100 ) $every_rec=2;
$mysqli_request="SELECT * FROM `table` WHERE `time`>'$my_time' AND id % $every_rec = 1";
...


Будет ли изменение нагрузки на БД и сайт в связи с данным изменением?
Есть ли лучший способ или запрос, наименее нагружающий БД?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
@vyrkmod
Пишу на php. И не стыдно.
Ну тут очевидно лучше "SELECT COUNT(*)" в первом запросе: результатом будет искомое число строк, а не 100000 строк с одной колонкой. И да, конкатенация в запросах - зло, используйте mysqli_prepare() и mysqli_stmt_bind_param().
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@402d
начинал с бейсика на УКНЦ в 1988
во первых https://stackoverflow.com/questions/12864557/selec...
аналогия тут такая у тебя рота солдат.
select count() - быстро ответили 40. Так информация всегда в готовом виде
select count() where - заглянули в списки - ответили
а вот
query и $mysqli_result->num_rows;
уже по армейски
select * - рота стройся на плацу
в наличие столько то
и все стоят ждут команду налево по одному бегом марш
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы