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

首頁 > 開發 > 綜合 > 正文

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

2024-07-21 02:31:09
字體:
來源:轉載
供稿:網友

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

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

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

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

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

—Microsoft SQL Server開發團隊

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 马公市| 大姚县| 巫溪县| 江川县| 泰安市| 日土县| 巴彦淖尔市| 泽库县| 当阳市| 临武县| 莱芜市| 治多县| 铜陵市| 东台市| 永州市| 台东县| 亳州市| 西安市| 区。| 石狮市| 永川市| 柳江县| 石阡县| 江永县| 特克斯县| 淳化县| 潮安县| 新乡县| 安平县| 额尔古纳市| 诸城市| 佛学| 安阳市| 香河县| 万宁市| 巴林左旗| 扎兰屯市| 兰溪市| 称多县| 分宜县| 新丰县|