【发布时间】:2018-07-13 17:17:28
【问题描述】:
我们对具有索引的表存在性能问题。加载需要 1 小时,但如果我们删除索引并在每次加载后重新创建它们,它会在 30 分钟内执行。
在每个循环之后删除并重新创建该表的索引是否可行?
【问题讨论】:
-
请告诉我为什么要删除并重新创建索引?
-
因为 DML 性能非常缓慢,并且不知何故,当我们删除并重新创建相同的索引时,它花费的时间更少。 drop 和 recreate 背后没有逻辑,但它帮助我们做到了。如果我们能避免它,你能帮忙吗?我不认为这种 drop and recreate 是性能的解决方案
-
简短的回答是也许。但是,如果表上有太多索引,以至于删除和重新创建它们比维护它们更快,那么问题可能出在索引上。也许你有太多的,也许他们的结构很糟糕。你应该考虑审计你的索引使用情况。也许你有一些索引,你最好放弃它们。
-
加载前删除索引,加载后重新创建?
-
是一个大的插入语句还是多个?它们是位图索引吗?表有多少个索引?您是否监控索引使用情况?
标签: oracle performance bulk-operations