Можно ли оптимизировать без использования триггеров?

Dimetra
Дата: 13.10.2003 14:39:42
Есть текст примерно такого содержания (очень упрощенно)
...
update Table1
set Param1 = 1,
Param3 = 2

update Table1
set Param2 = Param1

Как можно оптимизировать этот текст с точки зрения быстродействия без использования триггеров?

Что-то типа такого
update Table1
set Param1 = 1,
Param2 = Param1,
Param3 = 2

За идеи заранее благодарен.
Александр Спелицин
Дата: 13.10.2003 14:57:43
А в чем проблема?
Оба Ваших варианта с точки зрения синтаксиса правильны. А также логичны. Что не устраивает?
Dimetra
Дата: 13.10.2003 15:03:59
TO Александр Спелицин

В реальном запросе одновременно обновляются несколько полей, причем их значение вычисляется по определенному алгоритму.
Причем блоки, приведенные в примере, повторяются несколько раз.
Все это занимает уйму времени.

Самое обидное, получается я два раза прохожу по одной и той же таблице,
первый - чтобы обновить значения вычисляемых полей,
второй - чтобы присвоить эти значения другим полям той же таблицы.
x
Дата: 13.10.2003 15:20:38
Реально второй вариант пройдет.
Правда гарантий на будущее никаких
Dimetra
Дата: 13.10.2003 15:23:13
TO x

Попробуй сначала :-).

Если серьезно, то во втором варианте значения столбцов меняются после выполнения обновления :-(.
Glory
Дата: 13.10.2003 15:30:47
Пока работает так

declare @t table (param1 int, param2 int)

insert @t values(1, 1)
insert @t values(2, 2)
insert @t values(3, 3)

declare @x int

select * from @t
update @t set @x=param1=1, param2=@x
select * from @t
alexeyvg
Дата: 13.10.2003 15:32:58
Можно переделать на подзапросы:

update Table1
set Param1 = calc1.Param1,
Param2 = calc1.Param1,
Param3 = calc1.Param3
from (select <calculate Param1> as Param1, <calculate Param3> as Param3
from ... where ...) as calc
Dimetra
Дата: 13.10.2003 15:44:23
Спасибо всем.

Особенно большое спасибо Glory и alexeyvg за решение.