Kimball在他的ETL Toolkit一書中,一直強調:對于有外鍵約束的表,為了提高load的速度,可以先將外鍵約束disable,加載完成后再enable(當然另外一個原因是進入數據倉庫的數據都是規范的,甚至可以考慮不使用外鍵約束,即違反約束的數據在Transformation部分就應該解決掉,當然這是設計問題了)。ps:另外兩個提高load速度的方法分別為使用sql loader和insert、update分離。當時還不是明白這個過程怎么具體實現,今天看《oracle concept》看到下面話終于明白了一些:
Flexibility for Data Loads and Identification of Integrity Violations
You can disable integrity constraints temporarily so that large amounts of data can be loaded without the overhead of constraint checking. When the data load is complete,you can easily enable the integrity constraints, and you can automatically report any new rows that violate integrity constraints to a separate exceptions table.
看來oracle這點上做的比較完善,還可以將違反完整性約束的數據自動記錄到一個exception表中。