1
我目前正在將數據從遺留系統遷移到當前系統。插入同一張表上的select語句
我在存儲過程中有這INSERT
語句。
INSERT INTO TABLE_1
(PRIMARY_ID, SEQUENCE_ID, DESCR)
SELECT LEGACY_ID PRIMARY_ID
, (SELECT COUNT(*) + 1
FROM TABLE_1 T1
WHERE T1.PRIMARY_ID = L1.LEGACY_ID) SEQUENCE_ID
, L1.DESCR
FROM LEGACY_TABLE L1;
但是,每當我從LEGACY_TABLE
的LEGACY_ID
多個值,對於SEQUENCE_ID
查詢不遞增。
這是爲什麼呢?我似乎無法找到關於INSERT INTO SELECT
聲明如何在幕後工作的任何文檔。我猜測它會選擇你選擇的表中的所有值,然後同時插入它們,這就是爲什麼它不會增加COUNT(*)
的值?
我還能做些什麼其他的解決方法?我無法創建SEQUENCE
,因爲SEQUENCE_ID
必須基於存在的PRIMARY_ID
的數量。他們都是主要的ID。
在此先感謝。
沒有其他辦法嗎?我需要優化插入表格,因爲我需要插入5000萬條記錄。 –
這不是一個壞的方法。但容易讓你保持。我們可以分批介紹'COMMIT'。如果您有'TABLE1'的'PRIMARY ID'的索引,則此塊將以最少的資源表現良好。 –
我的索引是'TABLE1''' PRIMARY ID'。雖然,對於這個表,主鍵是'PRIMARY_ID'和'SEQUENCE_ID'。另外,我需要在'LEGACY_TABLE'中將其他字段插入其他表中,如'TABLE2'和'TABLE3'。 –