次のクエリは、同じテーブルを 7 回更新します。これを 1 つのクエリにまとめて、7 回ではなく 1 回だけテーブルを通過するように最適化する方法を教えてください。大規模なデータセット..
ありがとう。
PSそれでもうまくいくかどうかはわかりませんが、各クエリ文字列は正確に計算する前にクエリに依存します..したがって、正確に保つためにそれらを分離しておく必要がある場合は、各文字列を最適化する助けを借りることができます(クエリ) 個別に。
次の SQL クエリは Delphi 2009 で作成されているため、形式が少し異なる場合がありますが、クエリを簡単に読み取ることができるはずです。
Str1 :=
'update user set amount = ' +
'(select round(sum(bill.amount),2) from bill where ' +
'bill.user = user.code); ' +
'update user set pay = ' +
'(select round(sum(bill.pay),2) from bill where ' +
'bill.user = user.code); ' +
'update user set balance = round(amount + pay,2);';
//execute query
Str1 :=
'update user set group_amt = ' +
'(select sum(bill.amount) from bill where ' +
'bill.client = user.client); ' +
'update user set group_pay = ' +
'(select sum(bill.pay) from bill where ' +
'bill.client = user.client); ' +
'update user set group_bal = round(group_amt + group_pay,2);';
//execute query
Str1 :=
'update user set bal_flag = true ' +
'where abs(balance) > 0.001 and bal_flag = false;';