第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

while循環(huán)查詢和更新數(shù)據(jù)的速度問題

while循環(huán)查詢和更新數(shù)據(jù)的速度問題

一只萌萌小番薯 2019-03-13 16:15:54
每次循環(huán)會select出幾千--幾萬不等的數(shù)據(jù),然后對其處理后再更新回去。經(jīng)過計算,每分鐘才處理3000條數(shù)據(jù)左右,太慢了,請大家?guī)椭榭?。where條件很簡單,應(yīng)該不存在索引問題。是不是和數(shù)據(jù)庫鏈接的建立有關(guān)系?請大家多多指教。代碼大概如下:   Statement stmt_Select = con.createStatement();    Statement stmt_Update = con.createStatement();     while (***)     {              String sql = "select a, b, c from tablename where .......";            stmt_Select.close();                  stmt_Select=con.createStatement();            stmt_Update.close();                  stmt_Update=con.createStatement();                           rs = stmt_Select.executeQuery(sql);     int i = 0;       while (rs.next()){            // 這里會對select出來的值進行兩次md5加密等      i = i + stmt_Update.executeUpdate("update tablename set a=......);       }            rs.close();       }
查看完整描述

5 回答

?
胡子哥哥

TA貢獻1825條經(jīng)驗 獲得超6個贊

    [i]stmt_Select.close();  [/i]    
           stmt_Select=con.createStatement(); 

          [i] stmt_Update.close();[/i]      
           stmt_Update=con.createStatement();

不要在循環(huán)里面頻繁的close, 全部放在rs.close()之前
參考如下
stmt_Select.close();
stmt_Update.close();
rs.close();


查看完整回答
反對 回復(fù) 2019-04-26
?
慕妹3146593

TA貢獻1820條經(jīng)驗 獲得超9個贊

PreparedStatement[quote] PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
SET SALARY = ? WHERE ID = ?");
pstmt.setBigDecimal(1, 153833.00)
pstmt.setInt(2, 110592)
[/quote]


查看完整回答
反對 回復(fù) 2019-04-26
?
大話西游666

TA貢獻1817條經(jīng)驗 獲得超14個贊

建議寫個存儲過程處理,你的業(yè)務(wù)也不算復(fù)雜。與數(shù)據(jù)庫交互必然會耗費很多時間的。


查看完整回答
反對 回復(fù) 2019-04-26
?
米脂

TA貢獻1836條經(jīng)驗 獲得超3個贊

建議你使用Updatable statement,給你一段我以前寫過的代碼吧,這段代碼用來處理14萬條記錄,具體時間記不太清了,不過效率還是挺高的:

[code="java"]
String sql = "select ccrq,dt_factory_date from ajdq";
Connection con = DbUtil._CONNECTION;//獲得數(shù)據(jù)庫連接
Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs = st.executeQuery(sql);
int i=0;
while(rs.next()){
String date = rs.getString(1);
Date d = DateUtil.parse(date);
if(d!=null){
rs.updateTimestamp(2, new Timestamp(d.getTime()));
rs.updateRow();
i++;
System.out.print(".");
if(i%100==0){
System.out.println(i);
con.commit();
}
}
}
rs.close();
st.close();
System.out.println();
System.out.println(i);
con.commit();
con.close();
[/code]


查看完整回答
反對 回復(fù) 2019-04-26
  • 5 回答
  • 0 關(guān)注
  • 912 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號