如何删除在线表informix Db中的大量行
Posted
技术标签:
【中文标题】如何删除在线表informix Db中的大量行【英文标题】:How TO Delete Large Amount Of rows in online table informix Db 【发布时间】:2015-01-05 06:14:07 【问题描述】:我有一个大型在线表(每天 1300 万行),我想将昨天的行移到另一个表并从在线表中删除。
我测试了一个方法:
1 - 从表顶部按行选择 100000 行并插入到另一个临时表。 (预计时间:0.87s)
2 - 按临时表映射将选定行插入第二个表。 (预计时间:1m12.59s)
3 - 通过临时表映射从第一个(在线)表中删除选定的行(估计时间:5m39.38s ->太长了请帮帮我)。 Informix 12.10
【问题讨论】:
【参考方案1】:在启用SET EXPLAIN ON
的情况下运行您的查询,并确认优化器正在按照您假设的方式执行缓慢的步骤。如果不是,您可能需要应用优化器指令或调整索引策略。 (记住索引越多,需要修改的页面就越多。)
如果INSERT
然后DELETE
操作耗时太长,使用基于表达式的分片是否可行?这将使您可以选择DETACH
昨天的片段,并将其附加到离线表中。
【讨论】:
以上是关于如何删除在线表informix Db中的大量行的主要内容,如果未能解决你的问题,请参考以下文章
当表没有 SELECT 权限时,如何在 informix db 中卸载表?