informix查询性能问题

时间:2010-10-21 03:21:31

标签: performance informix

以下SQL需要62秒才能返回:

select getCreditBalance(Customerid)
  from business_apply
 where serialno = '20101013000005'

如何调整它?

请详细告诉我。

我只是想知道我应该做些什么来调整它。 我们使用IDS 9.04。

与在JDBC中一样,我无法通过SET Explain ON

看到输出

我应该在dbaccess中执行查询(使用SET Explain)?

我的问题是我无法获得执行计划......如果我能得到它,我会在这里发布。

2 个答案:

答案 0 :(得分:3)

你没有给我们太多的工作。

基本问题

  • “SerialNo”列的类型是什么?
    • 如果是数字列,请不要引用您要搜索的值。
  • 'SerialNo'上有索引吗?

指数很重要;这种类型并不那么重要。

关键问题

  • getCreditBalance()过程有什么作用?

辅助问题

  • 您使用的是哪个版本的Informix?是IDS还是SE还是别的什么?
  • 你上次什么时候开始运行UPDATE STATISTICS?
  • 连接数据库时是否存在问题,或者这个查询肯定是慢的?
  • 您使用什么语言提交查询?
  • 是否存在涉及大量延迟的网络?
  • 您在运行哪个隔离级别?
  • Business_Apply表有多大?
    • 每行的大小是多少?
    • 多少行?
  • getCreditBalance()过程访问了哪些其他表?
    • 他们有多大?
    • 他们有适当的索引吗?
  • 运行Informix服务器的是什么类型的计算机?
  • 使用SET EXPLAIN运行时,查询计划会告诉您什么?
  • 你有没有机会得到一张失败的磁盘而o / s正在永远读取它?

答案 1 :(得分:1)

确保serialno上有索引并调整getCreditBalance函数中的代码。不知道那是什么,很难给你任何额外的帮助。