如何删除在线表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 中卸载表?

如何删除EXCEL表中的大量数据行,要删除的行数大概8万

Informix 中的数据库别名

表列表(在 DB2、SQL Server、Informix 和 Oracle 中)

更新informix中的行时如何修复错误-245

informix上如何执行*.sql脚本