У меня есть процесс расчета ежедневного прогноза продаж в большой таблице в SQL Server 2008 R2 (назовем его Mothership
). Каждый день я просматриваю CDC в транзакционных базах данных, чтобы извлечь изменения, вычислить прогноз дельты и объединить этот Delta
с Mothership
. Проблема в том, что производительность дико непоследовательна. Mothership
имеет 25M строк, а Delta
имеет 1 - 2M строк. Я видел производительность от 8 минут до часа для слияния.Повысить производительность оператора MERGE в SQL Server
'Слить утверждение довольно прямо вперед:
MERGE INTO Mothership AS tgt
USING Delta AS src
ON Mothership.Key1 = Delta.Key1 AND ... AND Mothership.Key4 = Delta.Key4
WHEN MATCHED AND Mothership.UpdateDate < Delta.UpdateDate
(UPDATE all data columns on Mothership)
WHEN NOT MATCHED
(INSERT into Mothership)
У меня есть первичный ключ, определенный на Key1 к КЛЮЧ4 на каждом столе, а производительность по-прежнему противный. Есть ли ошибка в MERGE в отношении производительности?
Можете ли вы опубликовать план выполнения? – MatBailie