相关疑难解决方法(0)

更新1.2亿条记录的最快方式

我需要在一个1.2亿记录表中初始化一个值为-1的新字段.

Update table
       set int_field = -1;
Run Code Online (Sandbox Code Playgroud)

我让它运行了5个小时才取消它.

我尝试运行它,事务级别设置为读取未提交的相同结果.

Recovery Model = Simple.
MS SQL Server 2005
Run Code Online (Sandbox Code Playgroud)

如何更快地完成这项工作?

sql sql-server sql-server-2005

44
推荐指数
3
解决办法
12万
查看次数

如何在SQL Server中更新包含数百万行的大表?

我的UPDATE声明可以更新超过百万条记录.我想分批更新1000或10000.我试过@@ROWCOUNT但我无法得到理想的结果.

仅仅为了测试目的我做了什么,我选择了包含14条记录的表并将行数设置为5.此查询应该更新5,5和4中的记录,但它只更新前5条记录.

查询 - 1:

SET ROWCOUNT 5

UPDATE TableName 
SET Value = 'abc1' 
WHERE Parameter1 = 'abc' AND Parameter2 = 123

WHILE @@ROWCOUNT > 0
BEGIN
    SET rowcount 5

    UPDATE TableName 
    SET Value = 'abc1' 
    WHERE Parameter1 = 'abc' AND Parameter2 = 123

    PRINT (@@ROWCOUNT)
END

SET rowcount 0
Run Code Online (Sandbox Code Playgroud)

查询 - 2:

SET ROWCOUNT  5

WHILE (@@ROWCOUNT > 0)
BEGIN
    BEGIN TRANSACTION

    UPDATE TableName 
    SET Value = 'abc1' 
    WHERE Parameter1 = 'abc' AND Parameter2 = …
Run Code Online (Sandbox Code Playgroud)

sql-server

19
推荐指数
5
解决办法
6万
查看次数

如何在UPDATE语句上创建一个循环,直到没有要更新的行为止?

假设我有数千行要更新.

我计划迭代地进行更新; 通过每次迭代仅更新1000行.

我想迭代,直到没有行要更新.

如何在没有要更新的行之前运行下面的T-SQL脚本?

-- TODO: Create a loop so that it exists when there is no ROW left to be updated; 
-- how can I do it?

UPDATE tableToUpdate
SET IsVegetable = 1
WHERE Id IN
               (SELECT TOP 1000 Id
                FROM tableToUpdate
                WHERE Date = '2011-07-23 14:00')

-- Loop ends
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server dynamic-sql

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

sql-server ×3

sql ×2

dynamic-sql ×1

sql-server-2005 ×1

t-sql ×1