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

Работаю с 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 * - рота стройся на плацу
в наличие столько то
и все стоят ждут команду налево по одному бегом марш
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽