Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с курсором на update  [new]
terra_1231
Member

Откуда:
Сообщений: 39
Есть запрос надо обновить 2 млн строк
Сделал такой запросик все тупит
DECLARE @New int = 100;
UPDATE test1
SET Zak = @New
WHERE zak1 = 3;

как лучше сделать через курсор ?
24 окт 16, 10:59    [19814680]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с курсором на update  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
terra_1231,

для начала рассказать вводную, какого размера таблица, какие есть индексы, в чем выражается тупение?
обычно если нельзя заблочить таблицу на долгий срок, делают while цикл.
24 окт 16, 11:04    [19814699]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с курсором на update  [new]
terra_1231
Member

Откуда:
Сообщений: 39
WarAnt,

Забыли про тупняки . талица из трех колонок id zak zak1
В zak место n числа проставить 100 где zak1 =3
Надо именно курсором сделать update
24 окт 16, 11:50    [19815008]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с курсором на update  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
terra_1231
WarAnt,

Забыли про тупняки . талица из трех колонок id zak zak1
В zak место n числа проставить 100 где zak1 =3
Надо именно курсором сделать update


ну надо, так делайте:)
24 окт 16, 12:31    [19815256]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с курсором на update  [new]
terra_1231
Member

Откуда:
Сообщений: 39
WarAnt,

можно пример плз )) по запросу
DECLARE @New int = 100;
UPDATE test1
SET Zak = @New
WHERE zak1 = 3;
24 окт 16, 12:33    [19815276]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с курсором на update  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
terra_1231,
2012+
чтобы не мешать остальным:

DECLARE @ii int = 0 ;
WHILE @ii < 1000
BEGIN
    UPDATE TOP (1000) dbo.test1 ;
    SET Zak = @New ;
    WHERE zak1 = 3 and ZAK <> @New;
    WAITFOR DELAY '00:00:01' ;
    SET @ii+=1 ;
END;
24 окт 16, 12:43    [19815310]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с курсором на update  [new]
terra_1231
Member

Откуда:
Сообщений: 39
Владислав Колосов,

ООООО большое спасибо то что нужно
24 окт 16, 12:47    [19815324]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с курсором на update  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Владислав Колосов
terra_1231,
2012+
чтобы не мешать остальным:

DECLARE @ii int = 0 ;
WHILE @ii < 1000
BEGIN
    UPDATE TOP (1000) dbo.test1 ;
    SET Zak = @New ;
    WHERE zak1 = 3 and ZAK <> @New;
    WAITFOR DELAY '00:00:01' ;
    SET @ii+=1 ;
END;
Тогда уж так:
Upd:
UPDATE TOP (1000) dbo.test1 SET Zak = @New WHERE zak1 = 3 and ZAK <> @New;
IF @@ROWCOUNT>0 GOTO Upd;
24 окт 16, 12:51    [19815337]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить