數據分批查詢數據
Sql Server:
前段時間由於線上項目的活動問題,發現向第三方系統請求數據的時候,請求的數據量竟然達到了3w多,請求的數據的方式採用Http請求的形式,事先沒有想到會有這麼多的數據量,所以只能分批去其他系統請求數據,每次請求200條,具體情況爲:
在數據庫中存在一張表,主要字段有user_id(用戶名),count(物品數量),系統要求能夠實時更行用戶的物品數量,但是保存物品數量的接口不在自己的系統中,所以需要想起他的系統請求數據,主要是每次如何獲得用戶user_id,又不重複。主要學習的是用數據庫Sql 語句的學習:
select top 200 user_id from(
SELECT
(Row_number()
OVER(
ORDER BY user_id)) as ix,
user_id
FROM [xxx].[dbo].t_world_cup_exchange_user_flag_list
GROUP BY user_id
) tt
where tt.ix > #{index,jdbcType=VARCHAR}
主要使用數據庫函數,Row_number爲返回的結果集生成特定的序列號,利用這個函數就能實現每次用200個不同的用戶去請求數據,如從0~200,201~401,401~601... ...這樣的序列開始選擇自己需要的用戶Id,當然在自己的程序需要保存這個index遊標的值,並且保持能夠循環。
MySQL:
select * from table limit pageId,limit
--- --- 路漫漫其修遠兮,吾將上下而求索