看板 java 關於我們 聯絡資訊
請教一下各位版大(文長,恕耐心觀看) 如果要算某資料表(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://www.ptt.cc/bbs/java/M.1444153979.A.BB0.html qazsd:轉錄至看板 Database 10/07 04:29
gmoz: 同一台機器嗎 10/07 14:25
qazsd: 對 同一台機器 10/07 14:44
adrianshum: 什麼 DB? 有些 DB (e.g. Oracle) 有 Analytic func 10/08 08:10
adrianshum: 直接可以做到你想要的結果 10/08 08:10