for (String tableName : tableNames) {//檢查是否全為空for (long p_hour = start; p_hour <= end; p_hour++) {String sql="select * from HIVE_READ_INSERT_HISTORY where "+imsiORmsisdnSql(imsi, msisdn, tableName)+" and p_hour='"+p_hour+"' "+ "and table_name='"+tableName+"' and is_ok='empty'";System.out.println("檢查狀態 sql##" + sql);//一般情況下只有一行List<Map<String, String>> selectData = oracleService.selectData(sql);if(selectData!=null&&selectData.size()>0) {emptyCount++;}}for (long p_hour = start; p_hour <= end; p_hour++) {String sql="select * from HIVE_READ_INSERT_HISTORY where "+imsiORmsisdnSql(imsi, msisdn, tableName)+" and p_hour='"+p_hour+"' "+ "and table_name='"+tableName+"' and is_ok='success'";System.out.println("檢查狀態 sql##" + sql);List<Map<String, String>> selectData = oracleService.selectData(sql);if(selectData!=null&&selectData.size()>0) {successCount++;}}}
上面的代碼可以優化,不要 table_name=。用 table_name in( ?for循環拼接表名 ?)
for循環一次訪問數據庫一次,關閉一次,資源消耗大。獲取結果后用代碼實現判斷。