oracle function-oracle中function执行效率问题

问题描述

oracle中function执行效率问题

以下是我写的一个java程序,在eclipse里执行时间平均是4.5s,
但是如果我把以上程序写入到oracle的java source中,并且调用以这个java source生成的function,执行效率就非常慢,大概是6到7分钟。

后来把BufferedWriter bw 的write过程去掉(即只执行查询),时间是13s,
就是说该程序在oracle中执行的时候,绝大部分时间是在执行write。

请问各位大神有没有提高效率的方法?

public class GPtest {

    public static void main(String[] args) {

            FileOutputStream fos = null;
            BufferedWriter bw = null;

            Connection conn = null;
            Statement stmt = null;
            ResultSet rs = null;

            int i;

            try{
                    fos = new FileOutputStream("test_data.txt");
                    bw = new BufferedWriter(new OutputStreamWriter(fos));

                    Class.forName("org.postgresql.Driver");
                    conn = DriverManager.getConnection("jdbc:postgresql://72.160.0.4/Test", "gpadmin", "gpadmin");
                    stmt = conn.createStatement();
                    rs = stmt.executeQuery("select * from t_test");

                    int columnNum = rs.getMetaData().getColumnCount();//表的字段数

                    while(rs.next()){
                            for(i=1;i<=columnNum;i++){
                                    bw.write(rs.getObject(i)+" ");
                            }
                            bw.write("n");//写完一条记录后换行
                    }

                    bw.flush();
            }catch(Exception e){
                    e.printStackTrace();
            }finally{
                    try{
                            if(rs!=null){
                                    rs.close();
                            }
                            if(stmt!=null){
                                    stmt.close();
                            }
                            if(conn!=null){
                                    conn.close();
                            }
                    }catch(Exception e){
                            e.printStackTrace();
                    }

                    try{
                            if(fos!=null){
                                    fos.close();
                            }
                            if(bw!=null){
                                    bw.close();
                            }
                    }catch(Exception e){
                            e.printStackTrace();
                    }
            }

    }

}

解决方案

oracle导出表内数据为txt文本 http://www.2cto.com/database/201204/126433.html

解决方案二:

不是的,我这个代码是连接GreenPlum数据库,从GreenPlum数据库里获取数据用的

时间: 2024-11-16 08:04:41

oracle function-oracle中function执行效率问题的相关文章

如何解决Oracle分页查询中排序与效率问题

本文将结合作者近日工作中,在ORACLE数据库分页查询时,遇到一个小问题,为大家讲解如何解决Oracle分页查询中排序与效率问题. 原始未分页查询Sql代码如下: select ROWNUM rn, t.id ID, o.name YYB,u.name XM, t.MC from tZDYSX t,tuser u,lborganization o where t.cjr=u.id and u.orgid=o.orgcode and t.gx = 1 order by ID 结果如下: RN  I

解决Oracle分页查询中排序与效率问题

原始未分页查询Sql代码如下: select ROWNUM rn, t.id ID, o.name YYB,u.name XM, t.MC from tZDYSX t,tuser u,lborganization o where t.cjr=u.id and u.orgid=o.orgcode and t.gx = 1 order by ID 结果如下: RN ID YYB XM MC ---------- ----------------- ---------------------- 3 4

MySQL数据库中查找执行效率慢的SQL语句

启动Mysql时加参数--log-slow-queries来记录执行时间超过long_query_time秒的sql: /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock --log-slow- querie

数据库 oracle-oracle的存储过程中,执行用databaae links建立的另外一个存储过程报错!

问题描述 oracle的存储过程中,执行用databaae links建立的另外一个存储过程报错! 本地存储过程执行另外一个用数据链接操作的存储过程报错,是个oracle代码,题是分布式数据库不能操作 理论上通过数据链接应该可以执行的. 为什么? 解决方案 http://www.educity.cn/wenda/411522.html

Oracle提高sql执行效率的心得建议

sql执行效率一直都是为人所关注,那到底应该怎样提高呢?有什么比较好的方法,下面与大家分享下比较不错的建议,感兴趣的朋友可以参考下,希望对大家有所帮助 复制代码 代码如下: -->FROM子句中包含多个表的情况下,选择记录条数最少的表作为基础表 -->解析WHERE子句是自下而上的 过滤条件要有顺序 -->ORACLE会将'*'转换成列名 -->DELETE会在rollback segment中存放可恢复信息,可以试试TRUNCATE -->COMMIT会释放:1.rollb

Oracle中获取执行计划的几种方法

1. 预估执行计划 - Explain Plan Explain plan以SQL语句作为输入,得到这条 SQL语句的执行计划,并将执行计划输出存储到计划表中. 首先,在你要执行的SQL语 句前加explain plan for,此时将生成的执行计划存储到计划表中,语句如下: explain plan for SQL语句 然后,在计划表中查询刚刚生成的执行计划,语 句如下: select * from table(dbms_xplan.display); 注意:Explain plan 只生成执

Oracle中获取执行计划的几种方法分析

以下是对Oracle中获取执行计划的几种方法进行了详细的分析介绍,需要的朋友可以参考下   1. 预估执行计划 - Explain PlanExplain plan以SQL语句作为输入,得到这条SQL语句的执行计划,并将执行计划输出存储到计划表中. 首先,在你要执行的SQL语句前加explain plan for,此时将生成的执行计划存储到计划表中,语句如下: explain plan for SQL语句然后,在计划表中查询刚刚生成的执行计划,语句如下: select * from table(

大量数据执行-oracle在存储过程中执行update语句

问题描述 oracle在存储过程中执行update语句 在存储过程中经过加工对表执行update语句,但表的数据太大了,2百多万数据的表我就要执行1个多小时,,,8千多万数据的表要怎么办啊? 解决方案 有这样的思路你可参考下: 思路1.写存储过程,引入loop循环,分批次更新.提交: 思路2.以nologging形式重新建表,按新规则把数据插过来:

如何清除oracle中的执行sql记录在日志里面的的记录

问题描述 如何清除oracle中的执行sql记录在日志里面的的记录 如何清除oracle中的执行sql记录在日志里面的的斤斤计较绝对经典如何清除oracle中的执行sql记录在日志里面的的记录 解决方案 http://www.zhihu.com/question/27579044