1、用分頁查詢的方式取
先查詢出要處理的總資料量 count,然後假設每批要處理1000條,
int size = 1000;
int threadNum = count / size + 1;
for (int i = 0; i < threadNum; i++) {
Map paramMap = new HashMap();
//分批查詢
paramMap.put("PAGE_INDEX", i*size);
paramMap.put("PAGE_SIZE", size);
//用 paramMap 去分頁查詢資料庫
}
【
好處是:每一批資料基本都是數量相同的(除了最後一批)。
缺點是:
需要計算分頁,查詢時還要排序,同時在整個取資料的過程中:
1、不能對每批獲取資料時的條件欄位進行更新操作
2、用取模的方式取資料
paramMap.put("threadNum", threadNum);
paramMap.put("mod", i);
//用 paramMap 去取模查詢資料庫
// SELECT * FROM `tableName` WHERE id % threadNum = mod ; 即查詢條件為 自增主鍵除以執行緒數餘數為當前遍歷到的 i
好處是:
查詢時無需分頁、排序所以速度快,
在整個取資料過程中,
1、在一定程度上可以對每批查詢條件欄位進行更新;
1、用分頁查詢的方式取
先查詢出要處理的總資料量 count,然後假設每批要處理1000條,
int size = 1000;
int threadNum = count / size + 1;
for (int i = 0; i < threadNum; i++) {
Map paramMap = new HashMap();
//分批查詢
paramMap.put("PAGE_INDEX", i*size);
paramMap.put("PAGE_SIZE", size);
//用 paramMap 去分頁查詢資料庫
}
【
好處是:每一批資料基本都是數量相同的(除了最後一批)。
缺點是:
需要計算分頁,查詢時還要排序,同時在整個取資料的過程中:
1、不能對每批獲取資料時的條件欄位進行更新操作
2、用取模的方式取資料
int size = 1000;
int threadNum = count / size + 1;
for (int i = 0; i < threadNum; i++) {
Map paramMap = new HashMap();
//分批查詢
paramMap.put("threadNum", threadNum);
paramMap.put("mod", i);
//用 paramMap 去取模查詢資料庫
// SELECT * FROM `tableName` WHERE id % threadNum = mod ; 即查詢條件為 自增主鍵除以執行緒數餘數為當前遍歷到的 i
}
【
好處是:
查詢時無需分頁、排序所以速度快,
在整個取資料過程中,
1、在一定程度上可以對每批查詢條件欄位進行更新;