大表中大量資料更新問題

2021-08-31 07:37:59 字數 553 閱讀 1237

最近遇到個大批量資料更新表字段問題,需要將a表中m欄位儲存的字串進行某種統一格式的替換,where條件類似m like 『aaa%』。源資料有1700萬條,需要更新的資料有200多萬條。因為所更新的字段沒有索引,如果用 update set from where m like 'aaa%' 更新時需要鎖表,這在生產環境是不允許的。以下是更新資料的方法。

方法:1、先建立備份表backup,只有主鍵id欄位。

2、取符合更新條件的top(200000)條資料的主鍵id,插入備份表中。這是全表掃瞄查詢,不會鎖表。

3、使用 update a set m = 'bbb' from a inner join b on a.id = b.id 來關聯更新目標表資料。因為有關聯主鍵id的更新,所以可以通過索引來掃瞄表,不會鎖表。

4、刪除備份表中的資料。

重複2,3,4,步驟10次就可以更新完資料。

執行時間。

第2步 從1700萬條資料中 like 全表掃瞄取前200000資料大概需要2,3s時間。

第3步 主鍵id關聯更新大概需要6s時間。

時間上可以接受。

RecyclerView的資料更新問題

相信很多人都應該知道recyclerecyclerview的基本用法,如果不知道,請參考 概覽 好了,假設你已經基本了解了recyclerview的用法,正如上述文章中講的那樣,recyclerview跟listview不一樣,當我們想要更新資料的時候,有兩種情況 1 dataset為list,也通...

vue 非同步資料更新問題

記錄一下出現的問題,資料翻倍 這是復現問題的 data methods console.log 此時的this.allresult this allresult watch mounted 結果 此時你可以看到第二次的資料時 是 第一次的 2倍 mounted 和 watch 都執行 getmess...

access資料庫更新問題

今天update access資料庫時,使用了引數化的方式,結果不報錯,但是資料也沒有更新。這問題搞了我好長時間,鬱悶,經過google發現access使用引數化時,引數位置必須和賦值順序相同才行,否則更新時就會出現資料無法更新但是也不報錯的怪現象。例如 update tablename set a...