我有这样几个问题:
用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技术有些远??忘大家知道的告诉一下吧~·
收起