小技巧 分批取資料庫資料

2021-06-08 03:40:52 字數 641 閱讀 4332

在有些業務場景中需要分批去取資料庫表中的全部資料來進行處理,最簡單的方法就是使用分頁查詢語句(偷懶以mysql為例):

select * from datatable limit offset,amount

這裡就會有乙個問題,隨著offset值的越來越大,這條sql要掃瞄的表資料就會越來越多,因為要定位到offset這一行就需要掃瞄比offset小的所有行。顯然在一張大資料量的表中,去這樣做,效能就會出問題。為了避免這樣的情形出現,我們自然會想到使用索引來解決,比如使用自增序列id進行分批取:

select * from datatable where id >= start and id

這樣我們對id建索引,然後分批去取,顯然效果會高很多,但是如果自增序列由於刪除等操作變得不是連續,就會出現空執行和多執行的情況出現。要解決這個方法,我們就需要結合使用索引和分頁的優勢來處理:

select * from datatable where id >= start limit batchcount

然後每次取回來我們再計算出起始id值,再去取下一批資料。這樣就可以既避免了第一種不走索引,查詢效能低下的問題,又解決了第二種id不連續,導致取回來的資料量不穩定導致浪費的問題了。

資料庫小技巧

1.返回第乙個非空數值 select coalesce null,null,null,w3schools.com null,example.com 返回 w3schools.com select coalesce null,1,2,w3schools.com 返回 1 應用 將乙個欄位中空值全部替換...

資料庫使用小技巧

包括安裝時提示有掛起的操作 收縮資料庫 壓縮資料庫 轉移資料庫給新使用者以已存在使用者許可權 檢查備份集 修復資料庫等。一 掛起操作 在安裝sql或sp補丁的時候系統提示之前有掛起的安裝操作,要求重啟,這裡往往重啟無用,解決辦法 到hkey local machine system currentc...

資料庫語句小技巧

工作遇到的花裡胡哨但是很實用的資料庫相關的小技巧 整體原創 一,sql語句獲取某一字段的長度 select length 某一字段 二,行轉列,列轉行 互轉的兩張表結構 sql語句 行轉列 select username,max case subject when 語文 then score els...