|
Оптимизировать запрос | ☑ | ||
---|---|---|---|---|
0
Аксалотль
21.06.17
✎
11:48
|
Можно ли как нибудь оптимизировать этот запрос что бы быстрее работал?
ВЫБРАТЬ ЦеныСрезПоследних.Номенклатура ПОМЕСТИТЬ НоменклатураПоТипуЦен ИЗ РегистрСведений.Цены.СрезПоследних(&Момент, ТипЦен = &ТипЦен) КАК ЦеныСрезПоследних ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НоменклатураПоТипуЦен.Номенклатура, ОграничениеАссортиментаПодразделенияСрезПоследних.Состояние, ДополнительныеПараметрыНоменклатурыСрезПоследних.ОсновнойПоставщик ПОМЕСТИТЬ АссортПостав ИЗ НоменклатураПоТипуЦен КАК НоменклатураПоТипуЦен ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеПараметрыНоменклатуры.СрезПоследних(&Момент, ПодразделениеНазначения = &Подразделение) КАК ДополнительныеПараметрыНоменклатурыСрезПоследних ПО НоменклатураПоТипуЦен.Номенклатура.Ссылка = ДополнительныеПараметрыНоменклатурыСрезПоследних.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОграничениеАссортиментаПодразделения.СрезПоследних(&Момент, ПодразделениеКомпании = &Подразделение) КАК ОграничениеАссортиментаПодразделенияСрезПоследних ПО НоменклатураПоТипуЦен.Номенклатура = ОграничениеАссортиментаПодразделенияСрезПоследних.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЦеныСрезПоследних.Цена, АссортПостав.ОсновнойПоставщик КАК Поставщик, АссортПостав.Состояние КАК Ассортимент, АссортПостав.Номенклатура КАК Товар ИЗ АссортПостав КАК АссортПостав ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних ПО АссортПостав.ОсновнойПоставщик = ЦеныСрезПоследних.Контрагент |
|||
1
Fragster
гуру
21.06.17
✎
12:00
|
а нафиг в последнем запросе запрашиваются данные из того же регистра, что и в первом?
|
|||
2
xXeNoNx
21.06.17
✎
12:05
|
1. Нет индексов
2. Соединение с регистром без выборки 3. Нет ограничения по номенклатуре в РС |
|||
3
Рэйв
21.06.17
✎
12:06
|
(0)зачем тебе вт НоменклатураПоТипуЦен если ты ее потом нигде не используешь? Для красоты?
|
|||
4
Рэйв
21.06.17
✎
12:06
|
аа.сторно.Во второй вт:-)
|
|||
5
xXeNoNx
21.06.17
✎
12:07
|
(1) Повангую: Момент <> ТекущаяДата
Динамика цен? |
|||
6
catena
21.06.17
✎
12:08
|
+(5)Там еще ограничения по типу цен нет.
|
|||
8
xXeNoNx
21.06.17
✎
12:09
|
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних
ПО АссортПостав.ОсновнойПоставщик = ЦеныСрезПоследних.Контрагент вот тут загадка... |
|||
9
Лефмихалыч
21.06.17
✎
12:10
|
ПодразделениеКомпании = &Подразделение
И Номенклатура в (ВЫБРАТЬ НоменклатураПоТипуЦен.Номенклатура из НоменклатураПоТипуЦен) |
|||
10
Лефмихалыч
21.06.17
✎
12:11
|
в последнем запросе - тоже отобрать по номенклатуре
|
|||
11
Лефмихалыч
21.06.17
✎
12:11
|
а в РегистрСведений.Цены - нет типов цен?
|
|||
12
Лефмихалыч
21.06.17
✎
12:13
|
+(10) там даже (Контрагент, Номенклатура) В (ВЫБРАТЬ)
|
|||
13
rabbidX
21.06.17
✎
12:13
|
(2)
1) Если товаров по типу цен меньше 1000, индекс только замедлит запрос 2) Согласен 3) Запрос в параметрах виртуальной таблицы, также может увеличить время выполнения (0) Попробуйте вместо третьего запроса добавить соединение во втором. |
|||
14
rabbidX
21.06.17
✎
12:14
|
(6) Там цены контрагентов, ограничение по типу цен не нужно.
|
|||
15
wayss
21.06.17
✎
12:15
|
(0) какая СУБД?
|
|||
16
xXeNoNx
21.06.17
✎
12:16
|
(0) Вбросил и свалил..
Тебе оптимальный запрос написать? |
|||
17
Лефмихалыч
21.06.17
✎
12:17
|
(13) "может увеличить время" - не повод пренебрегать отборами виртуальных таблиц. Особенно, когда, подобно автору, ни хрена не соображаешь
|
|||
18
Аксалотль
21.06.17
✎
12:17
|
(16) Я тут, внимательно читаю и думаю :)
|
|||
19
xXeNoNx
21.06.17
✎
12:19
|
(13) 1. Если товаров меньше 1000, то вопрос с оптимизацией не поднялся бы
3. Смотря по чему запрос... |
|||
20
xXeNoNx
21.06.17
✎
12:25
|
+(19) даже если меньше 1000, если несколько соединений по этому полю, то это в любом случае будет эффективнее чем без индексов, если это только не выборка, например, в 10 позиций - тогда не имеет смысла... Любая индексация должна быть оправдана!
|
|||
21
dezss
21.06.17
✎
12:26
|
А может попробовать все 3 запроса объединить в 1?
|
|||
22
xXeNoNx
21.06.17
✎
12:27
|
(21) С вложенными подзапросами?
|
|||
23
dezss
21.06.17
✎
12:27
|
(22) зачем?
|
|||
24
dezss
21.06.17
✎
12:28
|
(23) тут же это и так напрашивается, разве нет?
ВЫБРАТЬ ЦеныСрезПоследних.Номенклатура ИЗ РегистрСведений.Цены.СрезПоследних(&Момент, ТипЦен = &ТипЦен) КАК НоменклатураПоТипуЦен ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеПараметрыНоменклатуры.СрезПоследних(&Момент, ПодразделениеНазначения = &Подразделение) КАК ДополнительныеПараметрыНоменклатурыСрезПоследних ПО НоменклатураПоТипуЦен.Номенклатура.Ссылка = ДополнительныеПараметрыНоменклатурыСрезПоследних.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОграничениеАссортиментаПодразделения.СрезПоследних(&Момент, ПодразделениеКомпании = &Подразделение) КАК ОграничениеАссортиментаПодразделенияСрезПоследних ПО НоменклатураПоТипуЦен.Номенклатура = ОграничениеАссортиментаПодразделенияСрезПоследних.Номенклатура; |
|||
25
xXeNoNx
21.06.17
✎
12:29
|
(23) Тут как мин 3 регистра сведений
|
|||
26
dezss
21.06.17
✎
12:29
|
(24) тьфу
ВЫБРАТЬ ЦеныСрезПоследних.Номенклатура ОграничениеАссортиментаПодразделенияСрезПоследних.Состояние, ДополнительныеПараметрыНоменклатурыСрезПоследних.ОсновнойПоставщик ПОМЕСТИТЬ АссортПостав ИЗ РегистрСведений.Цены.СрезПоследних(&Момент, ТипЦен = &ТипЦен) КАК НоменклатураПоТипуЦен ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеПараметрыНоменклатуры.СрезПоследних(&Момент, ПодразделениеНазначения = &Подразделение) КАК ДополнительныеПараметрыНоменклатурыСрезПоследних ПО НоменклатураПоТипуЦен.Номенклатура.Ссылка = ДополнительныеПараметрыНоменклатурыСрезПоследних.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОграничениеАссортиментаПодразделения.СрезПоследних(&Момент, ПодразделениеКомпании = &Подразделение) КАК ОграничениеАссортиментаПодразделенияСрезПоследних ПО НоменклатураПоТипуЦен.Номенклатура = ОграничениеАссортиментаПодразделенияСрезПоследних.Номенклатура; |
|||
27
xXeNoNx
21.06.17
✎
12:29
|
(24) а левое соединение вирт. таблицы не смущает?
|
|||
28
dezss
21.06.17
✎
12:30
|
(27) я не в курсе этих тонкостей.
А что не так с этим будет? |
|||
29
xXeNoNx
21.06.17
✎
12:32
|
(28) Как минимум неявная выборка всех полей регистра.
|
|||
30
Timon1405
21.06.17
✎
12:37
|
(0)
ошибка тут, лишняя .Ссылка ПО НоменклатураПоТипуЦен.Номенклатура.Ссылка = ДополнительныеПараметрыНоменклатурыСрезПоследних.Номенклатура нужно ПО НоменклатураПоТипуЦен.Номенклатура = ДополнительныеПараметрыНоменклатурыСрезПоследних.Номенклатура |
|||
31
dezss
21.06.17
✎
15:59
|
(29) почитал, понял...был не прав...
только тогда автору следует и 2 других обращения к вирт. таблицам запихнуь в вт. |
|||
32
youalex
21.06.17
✎
16:16
|
В первом запросе - срез не нужен, ВЫБРАТЬ РАЗЛИЧНЫЕ + условия по типу, периоду и активности
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |