Имя: Пароль:
1C
1С v8
долгий запрос
0 JIeoIIoJIbD
 
12.09.13
11:00
Доброго времени суток , подскажите как переписать запрос, чтобы по-быстрее работал ?

    Запрос.Текст = "ВЫБРАТЬ
                   |    Номенклатура.Ссылка
                   |ПОМЕСТИТЬ Номенклатура
                   |ИЗ
                   |    Справочник.Номенклатура КАК Номенклатура
                   |ГДЕ
                   |    Номенклатура.Ссылка В ИЕРАРХИИ
                   |            (ВЫБРАТЬ
                   |                УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателейНоменклатурныеЦеновыеГруппы.НоменклатурнаяЦеноваяГруппа
                   |            ИЗ
                   |                Документ.УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателей.НоменклатурныеЦеновыеГруппы КАК УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателейНоменклатурныеЦеновыеГруппы
                   |            ГДЕ
                   |                УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателейНоменклатурныеЦеновыеГруппы.Ссылка = &ДокПроверки)
                   |    И Номенклатура.ЭтоГруппа = ЛОЖЬ
                   |
                   |ОБЪЕДИНИТЬ ВСЕ
                   |
                   |ВЫБРАТЬ
                   |    Номенклатура.Ссылка
                   |ИЗ
                   |    Справочник.Номенклатура КАК Номенклатура
                   |ГДЕ
                   |    Номенклатура.НоменклатурнаяГруппа В
                   |            (ВЫБРАТЬ
                   |                УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателейНоменклатурныеЦеновыеГруппы.НоменклатурнаяЦеноваяГруппа
                   |            ИЗ
                   |                Документ.УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателей.НоменклатурныеЦеновыеГруппы КАК УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателейНоменклатурныеЦеновыеГруппы
                   |            ГДЕ
                   |                УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателейНоменклатурныеЦеновыеГруппы.Ссылка = &ДокПроверки)
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    СчетНаОплатуПокупателюТовары.Ссылка КАК СчетНаОплату,
                   |    СчетНаОплатуПокупателюТовары.Номенклатура
                   |ИЗ
                   |    Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплатуПокупателюТовары
                   |ГДЕ
                   |    СчетНаОплатуПокупателюТовары.Номенклатура В
                   |            (ВЫБРАТЬ
                   |                РегНакНом.Ссылка
                   |            ИЗ
                   |                Номенклатура КАК РегНакНом)"
                       ;
1 palpetrovich
 
12.09.13
11:03
Документ УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателей какие-то движения по какому-то регистру делает? да - делай запрос к нему
2 palpetrovich
 
12.09.13
11:06
да и последняя часть запроса почему не
выбрать
ССылка из Номенклатура,
СчетНаОплатуПокупателюТовары.Ссылка
левоесоединение
Документ.СчетНаОплатуПокупателю.ТоварыК АК СчетНаОплатуПокупателюТовары
по СчетНаОплатуПокупателюТовары.Номенклатура = ССылка

ps и названия ВТ -  Номенклатура - как-то некошерно :)
3 Fragster
 
модератор
12.09.13
11:11
(0) добавь индекс в первой таблице
4 Мыш
 
12.09.13
11:15
Такие синонимы "УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателейНоменклатурныеЦеновыеГруппы" портят зрение.
5 JIeoIIoJIbD
 
26.09.13
13:11
(2) если я правильно понял, то вы имеете ввиду
ВЫБРАТЬ
    НМНКЛТР.Ссылка
ИЗ
    Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплатуПокупателюТовары
        ЛЕВОЕ СОЕДИНЕНИЕ НМНКЛТР КАК НМНКЛТР
        ПО СчетНаОплатуПокупателюТовары.Ссылка = НМНКЛТР.Ссылка

при такой записи я успел покурить и выпить чаю, пока запрос выполнился )))


дело не тут, а в самом начале - долго выполняется кусок

                   |    Номенклатура.Ссылка
                   |ПОМЕСТИТЬ Номенклатура
                   |ИЗ
                   |    Справочник.Номенклатура КАК Номенклатура

как быть, знающие люди, подскажите
6 Cyberhawk
 
26.09.13
13:15
"долго выполняется кусок" - на глаз определил?
7 JIeoIIoJIbD
 
26.09.13
13:16
(6) покоцал запрос на куски
8 MadHead
 
26.09.13
13:28
Первым делом нужно заменить вложенные запросы на временную таблицу и проиндексировать поле по которому накладывается условие.
9 JIeoIIoJIbD
 
26.09.13
13:29
ВЫБРАТЬ
    Номенклатура.Ссылка
ПОМЕСТИТЬ НМНКЛТР
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Ссылка В ИЕРАРХИИ
            (ВЫБРАТЬ
                ТипыЦенПоГруппамНоменклатурыДляПокупателей.НоменклатурнаяЦеноваяГруппа КАК Номенклатура
            ИЗ
                РегистрСведений.ТипыЦенПоГруппамНоменклатурыДляПокупателей КАК ТипыЦенПоГруппамНоменклатурыДляПокупателей
            ГДЕ
                ТипыЦенПоГруппамНоменклатурыДляПокупателей.Регистратор = &ДокПроверки)
    И Номенклатура.ЭтоГруппа = ЛОЖЬ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Номенклатура.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.НоменклатурнаяГруппа В
            (ВЫБРАТЬ
                ТипыЦенПоГруппамНоменклатурыДляПокупателей.НоменклатурнаяЦеноваяГруппа КАК Номенклатура
            ИЗ
                РегистрСведений.ТипыЦенПоГруппамНоменклатурыДляПокупателей КАК ТипыЦенПоГруппамНоменклатурыДляПокупателей
            ГДЕ
                ТипыЦенПоГруппамНоменклатурыДляПокупателей.Регистратор = &ДокПроверки)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СчетНаОплатуПокупателюТовары.Ссылка КАК СчетНаОплату,
    СчетНаОплатуПокупателюТовары.Номенклатура
ИЗ
    Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплатуПокупателюТовары
ГДЕ
    СчетНаОплатуПокупателюТовары.Номенклатура В
            (ВЫБРАТЬ
                РегНакНом.Ссылка
            ИЗ
                НМНКЛТР КАК РегНакНом)


на данный момент запрос выглядит следующим образом , выполняется 5 - 6 секунд
10 GRAF_84
 
26.09.13
13:52
Не проверял, но должен выполняться быстрее.

ВЫБРАТЬ
    УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателейНоменклатурныеЦеновыеГруппы.НоменклатурнаяЦеноваяГруппа
ПОМЕСТИТЬ ВТ_НоменклатурныеЦеновыеГруппы
ИЗ
    Документ.УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателей.НоменклатурныеЦеновыеГруппы КАК УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателейНоменклатурныеЦеновыеГруппы
ГДЕ
    УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателейНоменклатурныеЦеновыеГруппы.Ссылка = &ДокПроверки

СГРУППИРОВАТЬ ПО
    УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателейНоменклатурныеЦеновыеГруппы.НоменклатурнаяЦеноваяГруппа
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Номенклатура.Ссылка
ПОМЕСТИТЬ Номенклатура
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Ссылка В ИЕРАРХИИ
            (ВЫБРАТЬ
                ВТ_НоменклатурныеЦеновыеГруппы.НоменклатурнаяЦеноваяГруппа
            ИЗ
                ВТ_НоменклатурныеЦеновыеГруппы КАК ВТ_НоменклатурныеЦеновыеГруппы)
    И Номенклатура.ЭтоГруппа = ЛОЖЬ

СГРУППИРОВАТЬ ПО
    Номенклатура.Ссылка

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Номенклатура.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.НоменклатурнаяГруппа В
            (ВЫБРАТЬ
                ВТ_НоменклатурныеЦеновыеГруппы.НоменклатурнаяЦеноваяГруппа
            ИЗ
                ВТ_НоменклатурныеЦеновыеГруппы КАК ВТ_НоменклатурныеЦеновыеГруппы)

СГРУППИРОВАТЬ ПО
    Номенклатура.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СчетНаОплатуПокупателюТовары.Ссылка КАК СчетНаОплату,
    СчетНаОплатуПокупателюТовары.Номенклатура
ИЗ
    Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплатуПокупателюТовары
ГДЕ
    СчетНаОплатуПокупателюТовары.Номенклатура В
            (ВЫБРАТЬ
                РегНакНом.Ссылка
            ИЗ
                Номенклатура КАК РегНакНом)
11 Нуф-Нуф
 
26.09.13
13:54
подзапросы во временную таблицу и индексом. во временной таблице Номенклатура добавить индекс
12 JIeoIIoJIbD
 
26.09.13
15:36
(10) спасибо добрый Человек , еще добавил к Вашему решению отбор по дате и все получилось как нельзя лучше . Спасибо
AdBlock убивает бесплатный контент. 1Сергей