次のテーブルがあります。
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
とItemId
は主キー列です。
私は(ストアドプロシージャで)1日を通して定期的に実行される挿入を行っています:
insert into DataValue(DateStamp, ItemId, Value)
select DateStamp, ItemId, Value from tmp_holding_DataValue;
これにより、保持テーブル ( tmp_holding_DataValue
) からメイン データ テーブル ( DataValue
) にデータが移動します。次に、保持テーブルが切り捨てられます。
問題は、例のように、メイン テーブルに既に存在する項目が保持テーブルに含まれる可能性があることです。キーは重複する値を許可しないため、手順は失敗します。
1 つのオプションは、insert プロシージャに where 句を配置することですが、メイン データ テーブルには 1000 万以上の行があり、これには長い時間がかかる可能性があります。
挿入しようとするときに重複をスキップ/無視する手順を取得する他の方法はありますか?