问题描述
- 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