国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

將一個更新劃分為幾個批次

2024-07-21 02:10:42
字體:
供稿:網(wǎng)友

問:我想以一次5,000行的方式批量更新一個大型表,但我不知道怎樣分割數(shù)據(jù)。該表不包含增量數(shù)字或整數(shù)主鍵。怎樣才能在保持良好性能的同時實現(xiàn)數(shù)據(jù)更新呢?

答:如果知道哪些行尚未被更新,您可以使用簡單的謂詞來排除已更新的行,rowcount設(shè)置可以幫助您批量分割數(shù)據(jù)。以下的代碼清單說明了如何使用該設(shè)置:

set rowcount 1000
while (1=1) begin
   begin transaction
   update...set ...,mylastupdate='date',...where
     mylastupdate < 'date'
     -- 更新1000未更新行
   if @@rowcount = 0
   begin
    commit transaction
    break
   end
   commit transaction
end

在指定的行數(shù)返回后,rowcount將使sql server停止查詢處理。這項技術(shù)很有用,因為它避免了大量更新所致的并發(fā)命中;更新中的行數(shù)越少,更新任務(wù)使其他用戶不能訪問該數(shù)據(jù)的可能性就越小。結(jié)合事務(wù)日志備份,這一方法還可以使您的事務(wù)日志的大小降至最低。

如果沒有識別已更新行的機(jī)制,您可以使用游標(biāo)遍歷所有數(shù)據(jù)并提交每個x值。但是,游標(biāo)占用服務(wù)器資源的時間通常要多于基于集合的語句。

—microsoft sql server開發(fā)團(tuán)隊

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 绵竹市| 逊克县| 江北区| 周口市| 绥中县| 广平县| 垣曲县| 阜新| 噶尔县| 拉孜县| 楚雄市| 泸溪县| 师宗县| 团风县| 武夷山市| 宝山区| 洛南县| 乐清市| 无极县| 获嘉县| 石林| 长汀县| 沅江市| 宝鸡市| 邯郸县| 高青县| 阿坝县| 且末县| 清苑县| 容城县| 正安县| 法库县| 团风县| 永修县| 图木舒克市| 治县。| 禄丰县| 巍山| 台安县| 利津县| 永登县|