使用php快速更新多个不同值的mysql行(大约100毫秒)

huus2vyu  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(232)

我有一个带有“value”和“id”列的数字表。我需要使用php根据id更新值。
这些值位于一个数组($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毫秒左右。
请给我一些建议,以优化我的查询,使之快速。

eqoofvh9

eqoofvh91#

您可以尝试编写语句—编译一次,使用多次。大多数数据库系统使用相当多的时间来解释语句,因此这可能会缩短您的时间。

9nvpjoqh

9nvpjoqh2#

可以在update中使用case语句,并在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);

相关问题