IF EXISTS или cразу DELETE ?

Winnipuh
Дата: 23.01.2009 16:42:22
что лучше с точки зрения производительности при удалении:

if exists(select 1 from t where id=@id)
        delete from t where id=@id

или сразу без проверки

delete from t where id=@id
iap
Дата: 23.01.2009 16:45:44
Winnipuh,

сразу. IMHO
Правда, триггеры вызовутся, даже если удалять нечего. С @@ROWCOUNT=0
Crimean
Дата: 23.01.2009 17:49:33
первое лучше оказалось. так как второе все равно перестроит индексы
это все равно что update mytable set field = field - индексы с field будут перестроены, хотя значение не менялось
имхо, конечно
Гавриленко Сергей Алексеевич
Дата: 23.01.2009 17:51:50
Crimean
это все равно что update mytable set field = field - индексы с field будут перестроены, хотя значение не менялось
имхо, конечно
Как-то вот не понятно, почему и как будут перестроены индексы.
Crimean
Дата: 23.01.2009 18:45:39
Гавриленко Сергей Алексеевич
Crimean
это все равно что update mytable set field = field - индексы с field будут перестроены, хотя значение не менялось
имхо, конечно
Как-то вот не понятно, почему и как будут перестроены индексы.


а хз как и почему
просто оптимизили один процесс
существенно помогло заворачивание всех update / delete в "if exists"
хотя до того стояла просто проверка @@rowcount (проверку-то оставили, но внутри if ессно)
объяснять никак не стал ибо устал объяснять поведение оптимизатора