Przeskakuj / ignoruj ​​duplikaty wierszy na wstawce

Mam następujące tabele:

DataValue

DateStamp    ItemId   Value
----------   ------   -----
2012-05-22   1        6541
2012-05-22   2        12321
2012-05-21   3        32

tmp_holding_DataValue

DateStamp    ItemId   Value
----------   ------   -----
2012-05-22   1        6541
2012-05-22   4        87
2012-05-21   5        234

DateStamp iItemId są kolumnami klucza podstawowego.

Robię wstawkę, która działa okresowo przez cały dzień (w procedurze zapisanej w bazie):

insert into DataValue(DateStamp, ItemId, Value)
select DateStamp, ItemId, Value from tmp_holding_DataValue;

Powoduje to przeniesienie danych z tabeli przechowywania (tmp_holding_DataValue) w głównej tabeli danych (DataValue). Tabela przetrzymywania jest następnie obcinana.

Problem polega na tym, że tak jak w przykładzie, tabela trzymająca może zawierać elementy, które już istnieją w głównej tabeli. Ponieważ klucz nie zezwala na powielanie wartości, procedura zakończy się niepowodzeniem.

Jedną z opcji byłoby umieszczenie klauzuli where w procencie insert, ale główna tabela danych ma 10 milionów + wierszy, a to może zająć dużo czasu.

Czy jest jakiś inny sposób na wykonanie procedury pomijania / ignorowania duplikatów podczas próby wstawienia?

questionAnswers(4)

yourAnswerToTheQuestion