_Fix
Дата: 31.01.2001 20:18:06
при выполнеии хранимой процедуры, в которой используются временные таблицы, 40-50 % времени теряется неизвестно куда, а именно при выполнении запросов вида DELETE FROM #TName WHERE NAME IS NULL, т.е. простейших запросов.
При замене временных таблиц на "безрешетчатые", все приходит в норму. К сожалению, логика не позволяет такое использование БД. сервер 7, машина 4*XEON 500, 100 юзеров в On-LINE. Кто нибудь знает, что происходит ?
Курков Михаил
Дата: 01.02.2001 15:30:54
Мы сталкивались с замедлением работы сохр. процедур, но связано это было с тем, что при компиляции процедуры игнорировалась иструкция SET FORCEPLAN ON и план запроса оставлял желать лучшего - в результате один (казалось бы) запрос в чистом виде выполнялся в несколько раз быстрее, чем в сохр. процедуре.
Выход был найден - просто тело запроса всавлялось в EXEC и замедления не наблюдалось.
Добавлю, что запрос был довольно сложным , а версия сервера - 6.5.
alexeyvg
Дата: 01.02.2001 19:28:14
Как правило, замедление происходит в случае, когда вр. табл. используется(delete, update) в той-же процедуре, где и заполняется и вызвано оно тем, что сервер строит план запросов _до_ заполнения вр. таблиц.
Если таблицы большые, необходимо это дело разнести.
Например:
create proc1 as
create teble #temp(...)
create index ... on #temp(...)
exec proc2
exec proc3
go
create proc2 as
insert #temp
.....
go
create proc3 as
update #temp
.....
delete #temp
.....
go
Если таблицы маленькие, то не знаю...