我有一个源表和一个相同的目标表,其中我们有一个每天、每个客户、每个周期的费率,我们每天有 48 个周期,所以对于单个客户,我们每天有 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
我正在编写一个脚本,它将比较两个表并将源表上存在但目标表上不存在的任何行插入到目标表中。
下面是我的查询,它工作正常,但我的问题是源表和目标表中都有超过 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
谢谢