gpt4 book ai didi

database - 提高 informix 中 sql 的性能

转载 作者:搜寻专家 更新时间:2023-10-30 20:07:05 28 4
gpt4 key购买 nike

任何人都可以帮助我提高以下 sql 的性能。使用的数据库是informix

SELECT 
informix.set_reason_codes.description as reason_code,
count(*) as number_of_calls
FROM
informix.contact_history,
informix.set_reason_codes,
informix.customers
WHERE
(informix.contact_history.reason_code = informix.set_reason_codes.reason_code)
and ( ( informix.set_reason_codes.code_type = 'CONTACT_HISTORY' ) )
and ( informix.contact_history.customerkey = informix.customers.customerkey )
and ( informix.contact_history.call_type = 0 )
group
by informix.set_reason_codes.description
order by
informix.set_reason_codes.description

最佳答案

您需要通过使用 EXPLAIN ON 运行此 SQL 来获取查询计划,即:

SET EXPLAIN ON;
SELECT ....

这会将优化器的计划写入文件(实际位置取决于操作系统和连接方法)。

有了这个之后,您就可以更好地确定性能问题的原因。但通常,它归结为以下事情之一:

  • 不合适的索引
  • 过时或缺失的索引统计信息

sqexplain 文件中有关 AUTO-INDEXes 或 SEQUENTIAL SCANs 的消息,其中您会期望 NESTED LOOP(索引连接)是一个很好的指示,需要进行一些调整。如果不出意外,运行查询并获得解释输出,然后执行,

UPDATE STATISTICS MEDIUM FOR TABLE informix.contact_history;
UPDATE STATISTICS MEDIUM FOR TABLE informix.set_reason_codes;
UPDATE STATISTICS MEDIUM FOR TABLE informix.customers;

如果您在性能上得到的结果与查询计划中报告的结果截然不同,您就知道您的问题与统计相关。

了解您正在运行的 Informix 的版本也会很有用。

关于database - 提高 informix 中 sql 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1475905/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com