За последние 24 часа нас посетили 16590 программистов и 1679 роботов. Сейчас ищут 852 программиста ...

Не нагрузит ли такой подход систему?

Тема в разделе "PHP для новичков", создана пользователем RomanCasper, 13 янв 2015.

  1. RomanCasper

    RomanCasper Новичок

    С нами с:
    17 дек 2014
    Сообщения:
    46
    Симпатии:
    1
    Можно ли в цикле делать выборку? Чтобы на каждом выполнении цикла делать новую выборку. Вот мой код:
    Код (PHP):
    1. $viborka1 = "SELECT g_admin FROM users WHERE (g_admin=id)";
    2. if (!$result1 = mysql_query($viborka1, $db)){
    3.     echo "<br>Не могу выполнить запрос 1<br>";
    4.     exit();
    5. }
    6. while ($row1 = mysql_fetch_array($result1, MYSQL_BOTH)){
    7.     $viborka2 = "
    8.     SELECT gr.g_fcast, gr.g_fres , ag.team_winner
    9.     FROM group_$row1[g_admin] gr
    10.     JOIN archive_games ag ON (gr.g_fcast = ag.id)
    11.     ";
    12.     if (!$result2 = mysql_query($viborka2, $db)){
    13.         echo "<br>Не могу выполнить запрос 2<br>";
    14.         exit();
    15.     }
    16.     $group_wins = 0;
    17.     $group_loses = 0;
    18.     while ($row2 = mysql_fetch_array($result2, MYSQL_BOTH)){
    19.         if ($row2["g_fres"]=="1"AND $row2["team_winner"] =="1"){ $group_wins = $group_wins+1; }
    20.         if ($row2["g_fres"]=="2"AND $row2["team_winner"] =="2"){ $group_wins = $group_wins+1; }
    21.         if ($row2["g_fres"]=="1"AND $row2["team_winner"] =="2"){ $group_loses = $group_loses+1; }
    22.         if ($row2["g_fres"]=="2"AND $row2["team_winner"] =="1"){ $group_loses = $group_loses+1; }
    23.     }
    24.     echo "<br>У группы № $row1[g_admin] : $group_wins - WINS и $group_loses - LOSES<br>" ;
    25.     mysql_free_result($result2);
    26. }
    27.  
    Надеюсь по коду понятно что он выполняет.
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    можно в цикле. а можно и одним запросом сразу выбрать и сгруппировать.
    нужно смотреть как все организовано в бд. какие есть связи.
     
  3. RomanCasper

    RomanCasper Новичок

    С нами с:
    17 дек 2014
    Сообщения:
    46
    Симпатии:
    1
    Я не придумал решения организовать данные со всех групп в одной таблице,поэтому когда пользователь создает группу, то в БД создается новая группа вида group_(id пользователя) . А в этом коде, я в цикле перебираю все группы(то есть таблицы), и для каждой группы создается своя, новая выборка. С удовольствием приму варианты создания одной выборки для всех существующих таблиц.
     
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    а почему бы не хранить все группы в одной таблице? зачем создавать отдельную таблицу каждой группе
     
  5. RomanCasper

    RomanCasper Новичок

    С нами с:
    17 дек 2014
    Сообщения:
    46
    Симпатии:
    1
    Согласен на счет этого с вами, когда начинал создавать группы, еще плохо был знаком с аспектами выборки, но уже слишком поздно менять структуру =) (хотя было бы правильней)
    У меня будет групп 20-30 , а переписывать 22 уже написанных php файла будет проблематично. Вот я и спросил про нагрузку системы, которая итак на соплях держится.
     
  6. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    незнаю что вы хотите услышать?
    естественно пара запросов лучше чем 30. но т.к. запросы простые у вас, то думаю работает это быстро. или уже сейчас большая задержка?

    но раз все равно нехотите переделывать, то оставляйте так. работать будет, куда оно денется.
     
  7. RomanCasper

    RomanCasper Новичок

    С нами с:
    17 дек 2014
    Сообщения:
    46
    Симпатии:
    1
    Пока все стоит на локальном сервере, задержки не чувствуется. Менять нечего не буду. Надеюсь не сломается) Я создавал тему с вопросом, можно ли сделать выборку из всех этих таблиц проще чем у меня. Например возможна ли реализация такая:
    В цикле добавлять к следующей выборке JOIN'ом все таблицы ? Но если такая реализация выйдет то будет 20-30 JOIN'ов. Или лучше забить?
     
  8. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    я бы забил.
    ибо если улучшать, то кардинально - менять принцип хранения групп. т.е. все группы в одной таблице. тогда и запросы упростятся и быстрее все это станет работать.
    а так, много возни, а результат почти не изменится. смысла не вижу.
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Название поля не должно меняться от запроса к запросу.
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Дзен-программирование?