ソース テーブルと同一のターゲット テーブルがあります。それらには、1 日あたり、顧客ごと、期間ごとのレートがあり、1 日あたり 48 の期間があるため、1 人の顧客の場合、1 日あたり 48 行になります。
tblSource
SD UpdateDate CustId Period Rate
01/01/2013 01/01/2013 14:30:29 1245 1 2.3
01/01/2013 01/01/2013 14:32:29 1245 2 4.3
01/01/2013 01/01/2013 14:34:29 1245 3 2.1
.....
01/01/2013 01/01/2013 14:34:29 1245 48 2.1
tblTarget
SD UpdateDate CustId Period Rate
01/01/2013 01/01/2013 14:30:29 1245 1 2.3
01/01/2013 01/01/2013 14:32:29 1245 2 4.3
01/01/2013 01/01/2013 14:34:29 1245 3 2.1
.....
01/01/2013 01/01/2013 14:34:29 1245 48 2.1
2 つのテーブルを比較し、ソース テーブルには存在するがターゲット テーブルには存在しない行をターゲット テーブルに挿入するスクリプトを作成しています。
以下は正常に動作するクエリですが、問題は、ソース テーブルとターゲット テーブルの両方に 400 万行を超える行があるため、プロセスに時間がかかりすぎることです。SD、CustId、および Period にターゲット テーブルとソース テーブルのインデックスがあります。列。
速度を向上させるために、このクエリを作成したり、最適化したりする他の方法はありますか?
SELECT s.SD, s.UpdateDate, s.CustId, s.Period, s.Rate
FROM tblScource s
LEFT JOIN tblTarget t ON t.sd = s.SD AND s.CustId = t.CustId AND s.Period = t.Rate
WHERE t.SD IS NULL and t.custId IS NULL
ありがとう