簡體   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