|
Как оптимизировать запрос? | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
24.04.18
✎
09:07
|
есть вот такое соединение как его оптимизировать можно? |
|||
1
Mankubus
24.04.18
✎
09:09
|
(0) разбить на 3 объединения?
|
|||
2
Рэйв
24.04.18
✎
09:16
|
Если имелось в виду, что при пустом заказе соединяется по акту,при пустом акте - по заказу, а при заполенных реквизитах и по акту и по заказу, то тут и так все оптимально вроде.
|
|||
3
RomaH
naïve
24.04.18
✎
09:21
|
(2) профайлер на такое соединение выдает 50 000 и потом на такое же еще 90 000
|
|||
4
systemstopper
24.04.18
✎
09:22
|
(3) 50000 чего?
|
|||
5
Рэйв
24.04.18
✎
09:22
|
(3)Так сама задумка не легкая. Так что результат естественен.
|
|||
6
RomaH
naïve
24.04.18
✎
09:25
|
объединение вроде помогает
надо только конечный результат сверить
|
|||
7
catena
24.04.18
✎
09:29
|
Просто интересно, а если так?
ЕстьNULL(втУслуги.Заказ.Ссылка, втСостояниеДокументов.Заказ)=втСостояниеДокументов.Заказ и ЕстьNULL(втУслуги.Акт.Ссылка, втСостояниеДокументов.Акт)=втСостояниеДокументов.Акт |
|||
8
unregistered
24.04.18
✎
09:30
|
(0) А почему нельзя по ИЛИ соединить?
втУслуги.Заказ = втСостояниеДокументов.Заказ И втУслуги.Акт = втСостояниеДокументов.Акт ИЛИ втУслуги.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказКлиентаМИС.ПустаяСсылка) И втУслуги.Акт = втСостояниеДокументов.Акт ИЛИ втУслуги.Акт = ЗНАЧЕНИЕ(Документ.АктВыполненныхРаботПоЗаказу.ПустаяСсылка) И втУслуги.Заказ = втСостояниеДокументов.Заказ |
|||
9
RomaH
naïve
24.04.18
✎
09:31
|
(4) duration
|
|||
10
RomaH
naïve
24.04.18
✎
09:32
|
(8) а ХЗ
мне не нужно соединение по заказу, если заказ пустой |
|||
11
unregistered
24.04.18
✎
09:35
|
(10) >> мне не нужно соединение по заказу, если заказ пустой
Это несколько противоречит (0): ВЫБОР КОГДА втУслуги.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказКлиентаМИС.ПустаяСсылка) ТОГДА втУслуги.Акт = втСостояниеДокументов.Акт |
|||
12
RomaH
naïve
24.04.18
✎
09:37
|
(11) как раз не противоречит
если заказ пустой - соединяю по АКТУ все - дальше не соединяем |
|||
13
RomaH
naïve
24.04.18
✎
09:41
|
да - пока остановимся на объединении
теперь продолжительность меньше 1000 (8) ИЛИ - 100% не подойдет (7) - не врубаюсь что там почему - но тут похоже опять проверка последующих условий, а у меня они по приоритету выстроены |
|||
14
systemstopper
24.04.18
✎
09:45
|
(6) Лучше до соединения с втСостояниеДокументов сначала сделай 3 временные таблицы из втУслуги по нужным условиям, а потом уже соединение делай с каждой и объединяй.
|
|||
15
Сти
24.04.18
✎
09:48
|
(12) то есть при этом в втСостояниеДокументов заказ может быть не пустым?
|
|||
16
RomaH
naïve
24.04.18
✎
09:52
|
(15) вполне
|
|||
17
youalex
24.04.18
✎
09:58
|
(1)
или три соединения, но тогда для полей втСостояниеДокументов придется isnull городить |
|||
18
timurhv
24.04.18
✎
10:07
|
(0) Заказ и Акт - составные типы?
|
|||
19
RomanYS
24.04.18
✎
10:16
|
(0)
втУслуги.Заказ В (ЗНАЧЕНИЕ(Документ.ЗаказКлиентаМИС.ПустаяСсылка), втСостояниеДокументов.Заказ) И втУслуги.Акт В (ЗНАЧЕНИЕ(Документ.АктВыполненныхРаботПоЗаказу.ПустаяСсылка), втСостояниеДокументов.Акт) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |