Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.08.28;
Скачать: CL | DM;

Вниз

можно как-то сделать быстрее?   Найти похожие ветки 

 
12 ©   (2009-12-31 11:32) [0]

этот кусок вызывает тормоза, время выполнения ~ 4,5 секунды. И около 5 секунд всего на SP.
Select
 @Qty = Sum(Case
   When D.CLocal = 1 and D.DLocal = 1 and J.Iteration = 0 Then 0
   When D.CLocal = 1 and D.CClient = 0 and J.Iteration >= 0 Then J.Move
   When D.DLocal = 1 and D.DClient = 0 and J.Iteration <= 0 Then -J.Move
   Else 0 End),
 @Cost1 = Sum(Case
   When D.CLocal = 1 and D.DLocal = 1 and J.Iteration = 0 Then 0
   When D.CLocal = 1 and D.CClient = 0 and J.Iteration >= 0 Then J.Sum1
   When D.DLocal = 1 and D.DClient = 0 and J.Iteration <= 0 Then -J.Sum1
   Else 0 End),
 @Cost2 = Sum(Case
   When D.CLocal = 1 and D.DLocal = 1 and J.Iteration = 0 Then 0
   When D.CLocal = 1 and D.CClient = 0 and J.Iteration >= 0 Then J.Sum2
   When D.DLocal = 1 and D.DClient = 0 and J.Iteration <= 0 Then -J.Sum2
   Else 0 End),
 @CostTax = Sum(Case
   When D.CLocal = 1 and D.DLocal = 1 and J.Iteration = 0 Then 0
   When D.CLocal = 1 and D.CClient = 0 and J.Iteration >= 0 Then J.SumTax
   When D.DLocal = 1 and D.DClient = 0 and J.Iteration <= 0 Then -J.SumTax
   Else 0 End)
From
 Journal J with(NOLOCK)
 Inner Join Document D with(NOLOCK)
                on J.Document = D.Document
Where
 J.Product = @Product and
 D.Shift <= @Shift and
 D.Deleted = 0 and
 D.InUse = 0 and
 D.UnderConstruction = 0

что смущает, так это практически идентичные when-then


 
clickmaker ©   (2009-12-31 11:54) [1]

@Qty = Sum(Case
  When D.CLocal = 1 and D.DLocal = 1 and J.Iteration = 0 Then 0
  When D.CLocal = 1 and D.CClient = 0 Then J.Move * SIGN(J.Iteration)

ну и план надо смотреть. где наибольшие издержки.
может, индексы стоит повесить


 
12 ©   (2009-12-31 12:42) [2]

@Qty = Sum(Case
  When D.CLocal = 1 and D.DLocal = 1 and J.Iteration = 0 Then 0
  When D.CLocal = 1 and D.CClient = 0 and J.Iteration >= 0 Then J.Move
  When D.DLocal = 1 and D.DClient = 0 and J.Iteration <= 0 Then -J.Move
  Else 0 End),

точно, это вообще идентично
@Qty = Sum(Case
 When D.CLocal = 1 and D.CClient = 0 Then J.Move * SIGN(J.Iteration)
 else 0 end)

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

хотя вот это
from Journal J
Join Document D on J.Document = D.Document
наблюдаю практически везде
сложно сказать пока, почему кластерные оказались другими


 
Anatoly Podgoretsky ©   (2009-12-31 15:08) [3]

По Дельфи вопрос есть?


 
stas ©   (2010-01-03 20:57) [4]

>что смущает, так это практически идентичные when-then
В первую очередь должно смущать это:
Where
J.Product = @Product and
D.Shift <= @Shift and
D.Deleted = 0 and
D.InUse = 0 and
D.UnderConstruction = 0

Индексы в правильном порядке проставлены?
если все же смущает  when-then, то убери и проверь прирост скорости


 
anonims   (2010-01-11 11:50) [5]

When D.CLocal = 1 and D.CClient = 0 Then J.Move * SIGN(J.Iteration)

D.CLocal = 1 and D.CClient = 0 перенести в WHERE (другие нам не нужны, т.к. ELSE 0 )

останется sum(SIGN(j.iteration)*j.move),  sum(sign()*sum1), ...


 
ANB   (2010-01-11 12:32) [6]

when сам по себе практически не дает нагрузки.
Смотреть план запроса на предмет связок и использования индексов



Страницы: 1 вся ветка

Текущий архив: 2011.08.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.007 c
15-1304785332
TUser
2011-05-07 20:22
2011.08.28
delphi for html/javascript ?


1-1265175281
dfd5
2010-02-03 08:34
2011.08.28
какое сообщение посылает приложению система когда перерисовываетс


15-1305007845
Tabula
2011-05-10 10:10
2011.08.28
нужно написать простенькую вещь на delphi. Оплата ВМЗ


15-1305056428
И. Павел
2011-05-10 23:40
2011.08.28
Как получить список запущенных приложений из сервиса


15-1303971325
Alien1769
2011-04-28 10:15
2011.08.28
Магический квадрат