зацикливание - один из худших способов снизить производительность базы данных!
Я бы посоветовал вам попытаться обработать оператор select в одной команде, примерно так:
UPDATE t2
SET Cola=t1.col1, Colb=t1.col2
FROM UserInput t1
JOIN YourTable t2 ON t1.id=t2.id
однако, если вы должны выполнить цикл, сделайте это следующим образом:
DECLARE @Current int, @LastRow int
DECLARE @Col1 datatype, @Col2 datatype ....
DECLARE @Results table (RowId int identity1,1) primary key, col1 ...,col2 ...)
INSERT INTO @Results SELECT * FROM UserImport
SELECT @Current=0, @LastRow=@@ROWCOUNT
WHILE @Current<@LastRow
BEGIN
SET @Current=@Current+1
SELECT @Col1=Col1, @Col2=col2 FROM @Results WHERE RowId=@Current
/* Do Stuff */
END
если вы обрабатываете более 100 строк, замените переменную таблицы: @Results
на временную таблицу: #Results
, например:
CREATE TABLE #RESULTS (RowId int identity1,1) primary key, col1 ...,col2 ...)
потому что это будет быстрее.