国产探花免费观看_亚洲丰满少妇自慰呻吟_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開發團隊

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 威海市| 张家界市| 湘潭县| 航空| 增城市| 齐齐哈尔市| 滦南县| 大竹县| 万山特区| 定西市| 武义县| 松阳县| 厦门市| 香格里拉县| 太和县| 静乐县| 敦化市| 哈尔滨市| 东源县| 宽城| 岳阳县| 城市| 绥宁县| 错那县| 华坪县| 迭部县| 天镇县| 噶尔县| 揭东县| 曲靖市| 宁陵县| 新竹县| 西吉县| 九龙县| 信阳市| 陵川县| 贵溪市| 阿巴嘎旗| 台北县| 安平县| 沅江市|