jdbc连接oracle的优化问题!(在线等,急~~)(websphere中)

我有这样几个问题:用jdbc连接oracle数据库查询表carInfo,carInfo表里会有几亿条数据(注:此carInfo表还没有创建)。问题一:我怎样设计carInfo表,才能有最大的性能并节省系统资源??我有一个思路:创建分区表,然后用索引方式查询。但我不知道效率怎么样.问题二:用jdbc连接数据库时,有时候...显示全部
我有这样几个问题:
用jdbc连接oracle数据库查询表carInfo,carInfo表里会有几亿条数据(注:此carInfo表还没有创建)。
问题一:我怎样设计carInfo表,才能有最大的性能并节省系统资源??我有一个思路:创建分区表,然后用索引方式查询。但我不知道效率怎么样.
问题二:用jdbc连接数据库时,有时候需要查询几千万条的数据,怎样优化jdbc。
问题三:jdbc连接是ResultSet的next()方法,原理是什么样的,ResultSet rs = stmt.executeQuery(“select * from carInfo“);是已经将表中的所有数据都读出来了,还是只是建立了一个连接,
每次调用next()方法,就从数据库里取一条??(我不太清楚他的原理,望大虾们解答一下。)
问题四:我说说我要做的需求把,我要做一个车辆流量统计图,就是用户可以查询某个时间段内车辆的流量统计情况:(比如1年内12月的流量情况;一个月内30天的流量情况;一天内24小时的流量情况
;一个小时内60分钟的流量情况等),所以说有可能要知道几年的车辆信息(也就有可能上亿条的数据量),在查询的时候我只要知道其中的数量就可以了,开始我想用count(*)查询的,但是问题是
比如我要查询一个小时时间段内的车的数量,那就是说我需要这一小时内每分钟的车辆过往数量,也就是说我得查询数据库60次count(*),这样的话就太费资源了吧。还有一中是select time from
carInfo where time between time1 and time2,查询出时间段的数据,再在外面用for循环,摘取出每分钟的车辆数量,这样是不是也很慢,for循环上亿条数据那可不是一般的慢啊。

小弟现在脑袋一片糨糊,希望大虾们能有什么更好的思路告诉小弟一下,不胜感激~
比如:有没有方法用一条sql语句从数据库里查询出某一时间段的数量,并可以直接查询出这一时间段内,每分钟的数量~~
小弟也接触oracle没多久,问题是不是有点白痴,希望大家见谅~
private static Connection conn;
private static PreparedStatement stmt;
private static ResultSet rs;
//连接参数
private final static String className = "oracle.jdbc.driver.OracleDriver";
private final static String url1 = "jdbc:oracle:oci:@orcl";
private final static String userName = "cardb";
private final static String passWord = "123”;
下面是jdbc代码:
public List findAllCarCharts(TiaoJian tiao){
  List list = null;
  try {
  //打开数据库
                     Class.forName(className);
  Properties pro = new Properties();
  pro.put("user",userName);
  pro.put("password",passWord);
  pro.put("defaultRowPrefectch","30");
  pro.put("dufaultBatchValue","5");
  conn = DriverManager.getConnection(url1,pro);
   String sql = "select PASS_TIME from car_charts where 1=1";
   //sql条件
   if(tiao.getTime1()!=null && tiao.getTime1()!="" && tiao.getTime2()!=null && tiao.getTime2()!=""){
    sql += " and PASS_TIME between '"+tiao.getTime1()+"' and '"+tiao.getTime2()+"'";
   }
   
   stmt = conn.prepareStatement(sql);
   rs = stmt.executeQuery();
   
   list = new ArrayList();
   CAR_CHARTS charts = new CAR_CHARTS();
   while(rs.next()){
    charts.setPASS_TIME(rs.getString("PASS_TIME"));
    list.add(charts);
   }
  }catch (SQLException ex) {
   ex.printStackTrace();
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  }finally{
   closeOracle();
  }
  return list;
}



是不是里websphere技术有些远??忘大家知道的告诉一下吧~·收起
参与8

查看其它 6 个回答wazljnnl6n的回答

wazljnnl6nwazljnnl6n软件开发工程师北京易华录
车辆表分区,索引。
流量表可以按月、日做临时表。
互联网服务 · 2010-08-10
浏览849

回答者

wazljnnl6n
软件开发工程师北京易华录

wazljnnl6n 最近回答过的问题

回答状态

  • 发布时间:2010-08-10
  • 关注会员:1 人
  • 回答浏览:849
  • X社区推广