Форум: "Базы";
Текущий архив: 2011.08.28;
Скачать: [xml.tar.bz2];
Внизможно как-то сделать быстрее? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c