作者qazsd (知足常乐)
看板Database
标题Fw: [问题] 捞出後处理与捞出前处理
时间Wed Oct 7 04:29:54 2015
请教一下版上大大
如果要算某资料表(repo)若干栏位的资料总数,
而该资料表有超过50个以上的栏位,
就以下两种方式:
【方式1】
//用指定条件的sql(有100条)捞出资料,然後逐一将各笔资料放进datanum阵列里
String[] sqlArray = new String[100];
sqlArray[0] = select count(*) from repo where 'type1' = '1';
sqlArray[1] = select count(*) from repo where 'type2' = '1';
..
..
sqlArray[99] = select count(*) from repo where 'type100' = '1';
PreparedStatement stmt;
ResultSet rs;
for (int i = 0; i < 100; i++) {
stmt = conn.prepareStatement(sqlArray[i].toString());
rs = stmt.executeQuery();
if (rs.next()) {
datanum[i] = rs.getInt(1);
}
}
【方式2】
//从资料库用SQL一次捞出所有资料
select * from repo;
//再逐一判断该笔资料的栏位是否符合指定条件
while(rs.next()){
if (rs.getString("type1"))=='1'
datanum[0]++;
if (rs.getString("type2"))=='1'
datanum[1]++;
..
..
if (rs.getString("type100"))=='1'
datanum[99]++;
}
最後两者都会产生datanum[99]这个阵列。
想请教以上两种方式就使用者而言哪种可以有会有较佳的回应速度?
又若条件变成为
"资料列有上万笔" 或
"资料库的栏位小於10个" 时,
上述两种方式孰优孰劣还是不变吗?
另外,资料表超过50个以上的栏位正规化後通常效率会比较好吗?
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.195.49.240
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1444153979.A.BB0.html
※ 编辑: qazsd (203.208.196.50), 10/07/2015 14:46:49