我使用两个不同的数据库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());
}
}
}
答案 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
的值设置为td1
或td2
列的值,那么您可以这样做:
SET td.A_Product = td1.product
OR
SET td.A_Product = td2.product