Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Разница в скорости работы хранимой процедуры


Term ©   (2006-08-14 11:48:00) 

Вопросец такой, хранимая из Query Analazer'а отрабатывает мгновенно, а из приложения 5 минут... в чём может быть причина...


Term   (2006-08-14 13:26:00) [1]

победил, дело было в том что

запрос в ХП
select @move_time=max(btime) from splaceshandling with(index(IX_splaceshandling_doc),nolock) where doc=@doc

почему то необращал внимание на индекс

после того как данные выбрал во временную таблицу, и сделал max по ней всё заработало


Term   (2006-08-14 12:06:00) [2]

CREATE procedure dbo.GetDoc
--поиск документа с заданными свойствами откуда, куда в заданном мх
@from int,
@to int,
@sp int,
@outres bit = 1

as
set nocount on
set transaction isolation level read uncommitted
declare
 @doc int,
 @time datetime,
 @doc_time datetime,
 @move_time datetime

set @time=getdate()

select @doc=A.storageplace, @doc_time=A.btime
from storageplaces A with(index(StPlacesParentIx),nolock)
left join spproperties B with(index(IX_spproperties_sp_type),nolock) on B.storageplace=A.storageplace and B.type=4 and B.value=@from
left join spproperties C with(index(IX_spproperties_sp_type),nolock) on C.storageplace=A.storageplace and C.type=5 and C.value=@to
where
 A.parentplace=@sp
 and A.dtime>getdate()

if IsNull(@doc,0)>0
 select @move_time=max(btime) from splaceshandling with(index(IX_splaceshandling_doc),nolock) where doc=@doc

Finish:
 if @outres = 1
   select IsNull(@doc,0) as doc, IsNull(@doc_time,0) as doc_time, IsNull(@move_time,0) as move_time
 else
   return(@doc)


tupoy   (2006-08-14 12:01:00) [3]

покажи запрос


Term   (2006-08-14 11:58:00) [4]

Profiler показал следующее

из приложения
reads - 254
duration - 266

из Analayzer'a
reads - 252
duration - 186

вот такие данные


Sergey13   (2006-08-14 11:54:00) [5]

> [4] Term ©   (14.08.06 11:52)

Значит в [5] я был не прав в своем предположении.


Term   (2006-08-14 11:52:00) [6]


> Например, в том что твое приложение пытается фетчить все
> записи, в то время как QA фетчит только необходимые для
> просмотра в дан.момент записи.

ХП возвращает только одну строку


Sergey13   (2006-08-14 11:52:00) [7]

Например, в приложении идет полный фетч записей на клиента. Если это так, то раз он идет 5 минут - это проблема в .... в голове в общем.


Сергей М.   (2006-08-14 11:51:00) [8]

Например, в том что твое приложение пытается фетчить все записи, в то время как QA фетчит только необходимые для просмотра в дан.момент записи.


Term   (2006-08-14 11:51:00) [9]

есть трасса в которую выводица исполняющийся в данный момент запрос, так вот именно на ней и висит по 5 минут...


stone   (2006-08-14 11:49:00) [10]

в 17-ой строке наверное

как время выполнения в приложении замерял?


Наверх

Титульная страница Поиск, карта сайта Написать письмо