考慮一下這個表:清除Oracle數據庫記錄
Table: ORDER [Columns: ID (PK), Order_Num, etc...]
Child Tables: ORDER_ITEMS, ORDER_TRANSACTIONS, ORDER_PAYMENTS, ORDER_TRANSPORT, and many more etc.
所有子表有外鍵指向順序表的主鍵。並且有大量的數據。
現在,我必須清除一些訂單。雖然我刪除正確的順序,即子表的記錄,然後再順序表 - 這對本特定的查詢運行一個非常非常巨大的時間(15分鐘)(單個訂單ID):
DELETE FROM ORDER WHERE ID='whatever'
的DBA說這可能是因爲Child Table依賴 - (FK檢查),而且子表本身包含大量記錄 - 因此需要花費時間(即使所有依賴關係都將最終滿足 - 因爲子記錄已被顯式刪除)。
我有哪些選擇:
- 我可以執行刪除主順序表之前禁用子表FK的關係?我怎樣才能輕鬆做到這一點。
- 任何其他方式告訴Oracle不檢查依賴關係嗎?
還是其他想法?
謝謝 - 這似乎是這種情況。 – Jasper 2013-02-15 07:48:15