请教一下版上大大
如果要算某资料表(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个以上的字段正规化后通常效率会比较好吗?
谢谢!