Informix 查询慢

Posted

技术标签:

【中文标题】Informix 查询慢【英文标题】:Informix query slow 【发布时间】:2010-11-22 06:52:44 【问题描述】:

Unix 上的 IDS 9.04。

我有一个有 200000+ 行的表,每行有 200+ 列。 当我在这个表上执行一个查询(应该返回 470+ 行和 50 列)时,需要 100+ 秒才能返回,dbvisualizer 告诉我:

执行时间:4.87 秒 获取时间:97.56 秒

如果我将所有 470+ 行导出到一个文件中,文件大小将小于 800K

UPDATE STATISTICS 已运行,只选择了 50 列,不涉及 blob,如果我选择前 100 行,则只需 5 秒即可返回。

请帮忙!

【问题讨论】:

哪个版本的 Informix,在哪个平台上?查询中的条件是什么?查询计划说什么?您是否运行过 UPDATE STATISTICS?列的宽度大约是多少——无论是选中的还是未选中的?是否涉及任何 blob? UPDATE STATISTICS 已运行,仅选择了 50 列,不涉及 blob,如果我选择前 100 行,则只需 5 秒即可返回。 【参考方案1】:

如果 SELECT FIRST 100 只需要几秒钟,则表明 FIRST_ROWS 的查询计划与 ALL_ROWS 的查询计划截然不同。

尝试使用 SET EXPLAIN ON 运行查询;无论有无 FIRST n。它可能会给你一个线索。

【讨论】:

【参考方案2】:

用途:

在 Avoid_execute 上设置解释;

YOUR_QUERY

开始解释;

并查看您文件夹中的 sqexplain.out 文件。

【讨论】:

以上是关于Informix 查询慢的主要内容,如果未能解决你的问题,请参考以下文章

informix SQL查询咨询

Informix 查询计划

如何在 Informix 上测量查询性能?

Informix “发生了语法错误。”使用子查询时

将 Informix 查询转换为 Oracle?

使用 Informix 和 Dapper 向查询添加参数失败并出现语法异常