我按总计IO运行了性能 - 热门查询(我正在尝试改进此过程)。
排名第一的是这段代码:
DECLARE @LeadsVS3 AS TT_LEADSMERGE
DECLARE @LastUpdateDate DATETIME
SELECT @LastUpdateDate = MAX(updatedate)
FROM [BUDatamartsource].[dbo].[salesforce_lead]
INSERT INTO @LeadsVS3
SELECT
Lead_id,
(more columns…)
OrderID__c,
City__c
FROM
[ReplicatedVS3].[dbo].[Lead]
WHERE
UpdateDate > @LastUpdateDate
(代码是一个更大的SP的一部分)
这是一项每15分钟运行一次的工作......除了不那么频繁地完成工作之外,还有其他改进吗?
答案 0 :(得分:0)
您发布的执行计划似乎是估算的执行计划。 (实际执行计划包括实际行数)。如果没有实际的计划,就不可能分辨出真正发生的事情。
明显改进 将在Lead.leadid上添加覆盖非聚簇索引,其中包括SELECT语句中的其他列。现在,您扫描最宽的索引(您的聚集索引)以检索可能的小百分比记录。将群集扫描转变为非群集搜索将是巨大的。
在同一个注释中,您可以将该索引设为过滤索引,该索引仅包含大于上一个UpdateDate的日期的记录。然后设置一个常规SQL作业,定期重建它以过滤更新的日期。
您可以采取的其他措施来提高插入效果: