1
現狀:刪除多條記錄與子表
- 表TBL有缺失〜10K項,
- 表TBL與刪除規則「不採取行動」 14個表,
- 我想刪除10k條目和子表中的引用條目。
步驟:
- 刪除記錄的子表,
- 禁用約束(如果約束是在下一步未被禁用刪除需要永遠),
- 在TBL表中刪除記錄,
- 啓用約束。
有沒有更優雅的方式來做到這一點?
問題是,第三步耗時過長,因爲它檢查存在不存在的記錄的14個大表。我的程序有很好的執行時間,但我認爲有更優雅的方式。
現狀:刪除多條記錄與子表
步驟:
有沒有更優雅的方式來做到這一點?
問題是,第三步耗時過長,因爲它檢查存在不存在的記錄的14個大表。我的程序有很好的執行時間,但我認爲有更優雅的方式。
這聽起來像你需要索引你的子表上的外鍵。每次刪除子表上沒有索引的父記錄時,它都必須對子進行全表掃描,以檢查外鍵約束是否被破壞。
使用索引時,最壞的情況是索引範圍掃描。
編輯: 更多信息,以及一個腳本來確定這是否是你的問題可以在這裏找到。 http://asktom.oracle.com/tkyte/unindex/index.html
這是一個很好的提示和AskTom鏈接(我投票了),但子表在這個FK索引。 – Chobicus 2009-01-30 15:12:42
您需要爲子表中的FK列編制索引。你做了14個FTS。那=慢。 14個索引查找=快速。 – 2009-01-30 16:27:17