У меня есть оператор слияния, который нужно сравнивать по многим столбцам.Исходная таблица имеет 26 000 строк.Таблица назначения имеет несколько миллионов строк.Таблица десинтации имеет только типичный индекс первичного ключа для столбца типа int.
Я сделал несколько выборок с помощью group by, чтобы подсчитать количество уникальных значений в источнике.слияния составляет
Merge Into desttable
Using #temptable
On
(
desttable.ColumnA = #temptable.ColumnA
and
desttable.ColumnB = #temptable.ColumnB
and
desttable.ColumnC = #temptable.ColumnC
and
desttable.ColumnD = #temptable.ColumnD
and
desttable.ColumnE = #temptable.ColumnE
and
desttable.ColumnF = #temptable.ColumnF
)
When Not Matched Then Insert Values (.......)
-- ColumnA: 167 unique values in #temptable
-- ColumnB: 1 unique values in #temptable
-- ColumnC: 13 unique values in #temptable
-- ColumnD: 89 unique values in #temptable
-- ColumnE: 550 unique values in #temptable
-- ColumnF: 487 unique values in #temptable
-- ColumnA: 3690 unique values in desttable
-- ColumnB: 3 unique values (plus null is possible) in desttable
-- ColumnC: 1113 unique values in desttable
-- ColumnD: 2662 unique values in desttable
-- ColumnE: 1770 unique values in desttable
-- ColumnF: 1480 unique values in desttable
Слияние сейчас занимает очень и очень много времени.Я думаю, что мне нужно изменить свой первичный ключ, но я не уверен, какая тактика может быть лучшей.26 000 строк могут быть вставлены при первом слиянии, но последующие слияния могут иметь только ~ 2000 вставок.Поскольку у меня нет индексов и только простой ПК, все идет медленно.:)
Кто-нибудь может указать, как сделать это лучше?
Спасибо!