[英]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
的值設置為td1
或td2
列的值,則可以執行以下操作:
SET td.A_Product = td1.product
要么
SET td.A_Product = td2.product
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.