【发布时间】:2018-11-15 18:02:35
【问题描述】:
对于包含 7000 万条记录的表,以下语句会消耗大量时间。
ALTER TABLE <table-name> ENABLE CONSTRAINT <constraint-name>
启用约束时是否扫描所有行。
即使启用了约束,进程也只是挂了 5 个多小时。
关于如何优化的任何想法
【问题讨论】:
-
“启用约束时表是否扫描所有行?” 是。
-
至于优化它,可能没有那么多选择。一些细节会很有用。它是什么样的约束?为什么它被禁用了?禁用时发生了什么?
-
取决于禁用约束的方式,请参阅the documentation。但通常 - 是 - 启用约束会导致扫描所有行以验证约束。
-
@APC-它是现有存储过程的一部分,我们可以启用此约束..它被禁用以更新某些列上的测试数据..发布它再次启用..但是这一步挂了,花了很多时间
-
但这是什么样的约束呢?检查约束?首要的关键?外键?与启用更新相比,在更新之前禁用约束有什么好处?
标签: oracle oracle11g ddl database-administration