Главная страница
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.008 c
1-1264839776
kudatsky
2010-01-30 11:22
2011.08.28
Как скопировать слово из одного TMemo в другой ?


15-1304994305
IPranker
2011-05-10 06:25
2011.08.28
Скачать видео со станицы.


2-1305349826
User
2011-05-14 09:10
2011.08.28
Dataset.Locate - ставит курсор посредиине таблицы


15-1304886593
Юрий
2011-05-09 00:29
2011.08.28
С днем рождения ! 9 мая 2011 понедельник


2-1305300970
Gu
2011-05-13 19:36
2011.08.28
Курсоры