2017-06-12 27 views
0

私は2種類の異なるデータベースtbl_data1(10000行)とtbl_data2(250万行)を使用しています。以下のソースコードを使用して更新するには時間がかかります。最初のデータベースの値を更新するのにかかる時間を短縮する方法はありますか?MySQLクエリ実行時間を短縮

$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

使用** JOIN ** s ... –

+0

select *から悪いうさぎです、feildの名前を入れてみてください* –

答えて

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)と実行が速くなります反復処理する必要はないことを意味します。

更新

あなたがtd1またはtd2の列のいずれかの値にtd.A_Productの値を設定したい場合は、あなただけ行うことができます。

SET td.A_Product = td1.product 

OR

SET td.A_Product = td2.product 
+0

両方のテーブルが異なるデータベースにあります。 – erdeepak

+0

このクエリでの私の理解によれば、静的な "製品"という値を設定しますが、前の表に基づいています。 – Santosh

+0

まあ、その場合、単に 'td1.prouct'または' td2.product'(私は実際に '$ product'を意味し、答えを更新しました)とすることができます。しかし、それがどのテーブルに属しているかははっきりしていません。私はとにかく答えを再び更新します。 –

関連する問題