繁体   English   中英

减少MySQL查询执行时间

[英]Reduce MySQL query execution time

我正在使用两个不同的数据库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());
            }
        }

}

您可以使用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

要么

SET td.A_Product = td2.product

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM