首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java / PostgreSQL -性能数据优化

Java / PostgreSQL -性能数据优化
EN

Stack Overflow用户
提问于 2013-05-14 14:51:07
回答 1查看 725关注 0票数 1

有一段时间了。我目前正在努力优化我的应用程序的性能。这是一个与我目前所拥有的类似的代码片段。

使用此查询的存储过程:

代码语言:javascript
复制
SELECT field_a, field_b, field_c
FROM table_a
WHERE field_a = param_a
AND field_b = param_b;

在Java语言中,我将这个SampleParameterClassArrayListparamAparamB属性声明为String

代码语言:javascript
复制
ArrayList<SampleParameterClass> sampleParams = new ArrayList<SampleParameterClass>();

sampleParams.add(new SampleParameterClass(stringValueForParamA, stringValueForParamB);

让我们假设sampleParams由数百个元素填充。

代码语言:javascript
复制
try
    {
        conn = ConnectionPool.getConnection();

        con.setAutoCommit(false);

        CallableStatement myProcedure = connection.prepareCall("{ ? = call my_proc_name(?, ?) }");

        for(int paramCounter = 0; paramCounter < sampleParams.size(); paramCounter ++){

            myProcedure.registerOutParameter(1, Types.OTHER);
            myProcedure.setObject(2, sampleParams.get(paramCounter).getParamA);
            myProcedure.setObject(3, sampleParams.get(paramCounter).getParamB);
            myProcedure.execute();

            ResultSet rs = (ResultSet) myProcedure.getObject(1);

            while (rs.next()) {

                String resultA = rs.getString("param_a");
                String resultB = rs.getString("param_b");
                String resultC = rs.getString("param_c");

                myArrayListOfResult.add(new Result(resultA, resultB, resultC);

            }
        }

    }
    catch (SQLException e) {
        myProcedure.close();
        conn.close();
    }
}

基本上,上面的代码所做的就是遍历ArrayList中的所有参数,并为每个参数调用存储过程。如果我有成千上万的数据要处理,它会像蜗牛一样慢,不是吗?

我的问题是:

1)即使队列中有数千个参数,是否可以只调用该过程一次?类似于传递参数的整个ArrayList

2)如果上面的问题无法回答,有什么方法可以最小化这个过程吗?

注意:

有关包含INSERT语句的过程的-Same问题。

如果我遗漏了什么,-I还没有找到类似的问题。请务必发布该问题的URL,我会将其标记为此问题的答案。

-I还没有找到类似于在过程中传递列表的阅读材料。

谢谢,任何回答都非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-14 15:54:41

为什么不将参数作为分隔字符串传递,然后在PostgreSQL端使用string_to_array( text,text,text)将字符串转换为数组。

请参阅http://www.postgresql.org/docs/9.1/static/functions-array.html

Postgres integer arrays as parameters?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16536821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档