减少MySQL查询执行时间

时间:2017-06-12 12:39:04

标签: php mysql

我使用两个不同的数据库tbl_data1(有10000行)和tbl_data2(有250万行)。使用下面的源代码进行更新需要太长时间。有没有办法减少更新第一个数据库中的值所花费的时间?

 $query="select * from tbl_data1";
    $result=mysqli_query($con,$query);
    while($row = mysqli_fetch_array($result,MYSQLI_ASSOC))
    {   
        $account=$row["A_Account"];
        $query1="select * from tbl_data2 where D_Account='$account'";   
        $result1=mysqli_query($con1,$query1);
        while($row1 = mysqli_fetch_array($result1,MYSQLI_ASSOC))
        {
            $product=$row1["D_Account_Type"];
            $query3="update tbl_data set A_Product='$product' where A_Account='$account'";
            $result3=mysqli_query($con,$query3);
            if (!$result3) 
            {
                die('Invalid query2: ' . mysqli_error());
            }
        }

}

1 个答案:

答案 0 :(得分:2)

您可以使用JOIN编写单个更新查询,例如:

UPDATE tbl_data td
JOIN tbl_data2 td2 ON td.A_Account = td2.D_Account_Type
JOIN tbl_data1 ON td2.D_Account = td1.A_Account
SET td.A_Product = '$product';

这意味着你不需要迭代这两个表(td1和td2),执行速度会更快。

<强>更新

如果您想将td.A_Product的值设置为td1td2列的值,那么您可以这样做:

SET td.A_Product = td1.product

OR

SET td.A_Product = td2.product