0
al_zzz
27.01.15
✎
23:44
|
Хочу выполнить свертку базы(а точнее, этого хочет клиент). Выполнение обработки останавливается на формировании документов ввода остатков цен номенклатуры. В отладчике посмотрел - там процесс зависает на запросе:
ВЫБРАТЬ
ЛОЖЬ КАК Активность,
&ПериодЗаписи КАК Период,
ТабРег.ТипЦен,
ТабРег.Номенклатура,
ТабРег.ХарактеристикаНоменклатуры,
ТабРег.Валюта КАК Валюта,
ТабРег.Цена КАК Цена,
ТабРег.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
ТабРег.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
ТабРег.СпособРасчетаЦены КАК СпособРасчетаЦены
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаОст, ) КАК ТабРег
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПервых(&ДатаОст, Период = НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&ДатаОст, ДЕНЬ, 1), ДЕНЬ)) КАК ТабРегСрезПервых
ПО ИСТИНА
И ТабРег.ТипЦен = ТабРегСрезПервых.ТипЦен
И ТабРег.Номенклатура = ТабРегСрезПервых.Номенклатура
И ТабРег.ХарактеристикаНоменклатуры = ТабРегСрезПервых.ХарактеристикаНоменклатуры
ГДЕ
ТабРегСрезПервых.Период ЕСТЬ NULL
и выполняется более суток(дождаться окончания не смог - администратор отключил процесс).
А вопросы у меня следующие: клиент использует postgres(версию не знаю), может ли быть в этом причина? Можно ли как-то оптимизировать запрос, чтоб он выполнился? Если да, то как? Сталкивались ли Вы с таким, если да, то как решали?
Спасибо!
|
|
1
sda553
28.01.15
✎
00:02
|
не вижу смысла в срезе первых на ДатаОст, т.к. мы все равно потом этот срез по конкретному периоду отбираем ДатаОст. Если уж есть период ДатаОст, то он вроде как при этих условиях и будет срезом первых.
|
|