Обновите несколько строк MySQL с различными значениями, используя php быстро и быстро (примерно за 100 мс) - PullRequest
0 голосов
/ 02 июля 2018

У меня есть таблица DIGITAL со столбцами «VALUE» и «ID». Мне нужно обновить значение в соответствии с идентификатором с помощью php.

Значения находятся в одном массиве ($ arr) и, используя цикл for, я обновляю 64 строки следующим образом:

  for($i=0;$i<64;$i++)
  {   
       $j=$i+1;
       $query="update DIGITAL set VALUE =$arr[$i] where ID='$j'";
       $exequery=mysqli_query($cn,$query);
  }

Обновление 64 строк занимает около 400 мс. Мне нужно сократить время до 100 мс.

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

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Вы можете использовать оператор case внутри update и выполнять цикл над оператором case. Тогда пример запроса на обновление будет выглядеть следующим образом:

   UPDATE DIGITAL SET VALUE =  CASE  
                    WHEN ID= jValue1 THEN arrValue1
                    WHEN ID= jValue2 THEN arrValue2 
                    WHEN ID= jValue3 THEN arrValue3 
                    END ;

с PHP

    $query="UPDATE DIGITAL SET VALUE = CASE ";
    for($i=0;$i<64;$i++) { 
            $j=$i+1; $query .= " WHEN ID = '".$j."' THEN $arr[$i] "; 
    }
    $query .= 'END;'; 
    $exequery = mysqli_query($cn,$query);
0 голосов
/ 02 июля 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...