考虑这张表:
Table: ORDER [Columns: ID (PK), Order_Num, etc...]
Child Tables: ORDER_ITEMS, ORDER_TRANSACTIONS, ORDER_PAYMENTS, ORDER_TRANSPORT, and many more etc.
所有子表都有指向 ORDER 表主键的外键。而且数据量很大。
现在,我必须清除一些订单。虽然我删除了正确顺序中的记录,即先删除子表,然后再删除订单表——运行这个特定的查询需要非常非常长的时间(15 分钟)(对于单个订单 ID):
DELETE FROM ORDER WHERE ID='whatever'
DBA 说这可能是因为子表依赖项 - (FK 检查),并且子表本身包含大量记录 - 因此需要时间(即使最终会满足所有依赖项 - 因为子记录被预先明确删除)。
我有什么选择:
- 我可以在主 ORDER 表上执行 DELETE 之前禁用子表中的 FK 关系吗?我怎样才能轻松做到这一点。
- 还有其他方法告诉 Oracle 不检查依赖项吗?
还是有其他想法?