Вход | Регистрация


1С:Предприятие ::

Метки: 

Помогите оптимизировать запрос

Я
   mariakw
 
27.02.18 - 19:35
Добый день.

Помогите, пожалуйста, оптимизировать запрос.  
Задача стоит такая: нужно получить остатки по товарам и материалам
из регистра ОстаткиТоваров.

Сам запрос: "ВЫБРАТЬ
    регОстатки.Номенклатура КАК Номенклатура,
    регОстатки.Характеристика КАК Характеристика,
    регОстатки.Склад КАК Склад,
    регОстатки.КоличествоОстаток КАК Остаток
ИЗ
    РегистрНакопления.ОстаткиТоваров.Остатки(
            ДАТАВРЕМЯ(2015, 1, 10),
            Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Товар)
                ИЛИ Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Материал)) КАК регОстатки".

Заранее спасибо!
 
 
   Волшебник
 
1 - 27.02.18 - 19:41
У тебя дата неправильная. Сейчас 2018 год
   mariakw
 
2 - 27.02.18 - 19:43
(1) Да понятно,  задание учебное.
   iITmenedger
 
3 - 27.02.18 - 21:03
(0)можно оптимизировать. Вместо ИЛИ в условии виртуальной таблицы остатков использовать Объединение двух запросов
   VitShvets
 
4 - 27.02.18 - 21:16
(0) Я бы попробовал условие по виду номенклатуры для виртуальной таблицы вытащить в пакетный запрос:
1. Выборка в ВТ_ТМЦ из справочника номенклатуры элементов с видами товар и материал. Дополнительно можно попробовать (3), хотя я не думаю что получится большая разница. Можно попробовать повесить индекс на ссылку. Надо пробовать и измерять время.
2. Указанный запрос, только условие по номенклатуре:
Номенклатура В (ВЫБРАТЬ ВТ_ТМЦ.Ссылка ИЗ ВТ_ТМЦ)
   Волшебник
 
5 - 27.02.18 - 21:51
(2) Покажите результат замера производительности. Расскажите про объём базы. До каких пор вы хотите оптимизировать запрос? Бюджет всей этой работы?
   Dzenn
 
6 - 27.02.18 - 22:26
Однозначно заменять ИЛИ, SQL его плохо перевариает
   Малыш Джон
 
7 - 27.02.18 - 22:34
да, попробовать заменить ИЛИ на

Номенклатура.ВидНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Материал))

ну и однозначно попробовать предварительную выборку из справочника "Номенклатура" делать, а потом уже по ней условие ставить
   Lemkus
 
8 - 27.02.18 - 22:49
Очень сомнительно, что вариант с заменой ИЛИ даст преимущество. Отбор будет эффективен, только по высокоселективному индексу. А в данном случае в базе наверное кроме товаров и материалов и нету ничего.
Самое лучше решение, особенно для учебного задания, проанализировать план выполнения запроса в профайлере для различных вариантов отбора.
   H A D G E H O G s
 
9 - 27.02.18 - 23:38
Ничего не менять.
Все равно будет скан.
А если вынесите в Объединение - будет скан+сик(в лучшем случае).
   Aleksandr N
 
10 - 27.02.18 - 23:45
(0) Возможно так:
Номенклатура.ВидНоменклатуры В (...)
Вместо ИЛИ.
Могу ошибаться конечно.
 
 Рекламное место пустует
   Armando
 
11 - 28.02.18 - 16:59
(10) для оптимизатора это тоже самое
   Tatitutu
 
12 - 28.02.18 - 17:06
Заменить

Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Товар)
                ИЛИ Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Материал)

на

Не Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Образец)

Перечисление.ВидыНоменклатуры.Услуга - по логике на остатках не будет 

что у тебя там еще из перечислений есть ?
Может кроте товара то и нет ничего ?
   Armando
 
13 - 28.02.18 - 20:03
(12)  нихера себе оптимизация
   nordbox
 
14 - 28.02.18 - 20:09
(12) Прикольно ))))
   nordbox
 
15 - 28.02.18 - 20:11
+14 Услуга наверное есть
   VitShvets
 
16 - 28.02.18 - 20:48
(12)  Лютый костыль. А завтра добавится значение перечисления "СферическийКонь_В_Вакууме"?



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует