Drages (17.12.2017 в 13:33)
В общем суть задания нужно выбрать случайную запись 1 из таблицы users:
Есть код:
$r = $db->query("SELECT f.`id`,`hp`,`hpall`,`login`,`prava`,`class`,`str`,`def`,`sex`,`lvl`,`effects_4_time`,`effects_5_time`,`effects_6_time` FROM `users` f JOIN ( SELECT rand() * (SELECT max(id) from `users` WHERE `lvl` = '".$user['pvp_lvl']."' and `id`!='".$user['id']."' and `prava`!='admin' and `prava`!='bot') AS max_id ) AS m WHERE `lvl` = '".$user['pvp_lvl']."' and `id`!='".$user['id']."' and `prava`!='admin' and `prava`!='bot' and f.id >= m.max_id ORDER BY f.id ASC LIMIT 1");
if($r -> num_rows > '0'){
while($account = $r->fetch_assoc())
{
Если в базе 5000 записей еще норм справляется, но если кинуть например 100,000 сервер мускул очень напряжно справляется с такой задачей, ломаю голову уже 2 суток. Готов заплатить за выполненную работу по снижению нагрузки и производительности обработки при больших кол-вах данных скажем так до 100,000 записей если норм будет справляться будет достаточно.
// удалил свой комментарий не так прочитал ))
________ посл. ред. 18.12.2017 в 02:40; всего 2 раз(а); by SNEG
Avenax (18.12.2017 в 01:52)
rekmixa (17.12.2017 в 13:51)
случайную запись 1 из таблицы users:
Есть код:
$r = $db->query("SELECT * FROM `users` WHERE `lvl` = '".$user['pvp_lvl']."' and `id`!='".$user['id']."' and `prava`!='admin' and `prava`!='bot' and `lvl` = '".$user['pvp_lvl']."' and `id`!='".$user['id']."' and `prava`!='admin' and `prava`!='bot' ORDER BY rand() LIMIT 1")->fetch(PDO::FETCH_LAZY);