Имя: Пароль:
1C
 
Postgre ??? Простейший запрос висит
0 tixis
 
17.12.14
13:30
Добрый день, подскажите по постгре. Ситуация: Запрос
ВЫБРАТЬ
    АктуальныеЦены.Номенклатура,
    АктуальныеЦены.Номенклатура.Код КАК Код,
    АктуальныеЦены.Цена,
    АктуальныеЦены.ЕдиницаИзмерения,
    ЕСТЬNULL(СтарыеЦены.Цена, 0) КАК ЦенаСтарая,
    ЕСТЬNULL(СтарыеЦены.ЕдиницаИзмерения, 0) КАК ЕдиницаИзмеренияСтарая
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонДата, ТипЦен = &ТипЦен {(Номенклатура).* КАК Номенклатура, (ТипЦен).* КАК ТипЦен}) КАК АктуальныеЦены
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НачДата, ТипЦен = &ТипЦен {(Номенклатура).* КАК Номенклатура, (ТипЦен).* КАК ТипЦен}) КАК СтарыеЦены
        ПО АктуальныеЦены.Номенклатура = СтарыеЦены.Номенклатура
            И АктуальныеЦены.ЕдиницаИзмерения = СтарыеЦены.ЕдиницаИзмерения
            И АктуальныеЦены.ТипЦен = СтарыеЦены.ТипЦен

В постгре висит очень долго, даже не дождался завершения работы, в sql выполнился быстро. Платформа 8.1. Это из за нсатроек постгре или из за чего?
1 ssh2QQ6
 
17.12.14
13:36
не знаю особенностей постгре на практике, ну сделай через временные таблицы
2 ansh15
 
17.12.14
13:49
3 Gepard
 
17.12.14
14:04
(0) а после установки ему было разрешено использовать больше 30Мб? )
4 thezos
 
17.12.14
14:11
(1) Конечно же в настройке постгреса.
5 pmb
 
17.12.14
14:19
(0) на Postgree луше не использовать срезпоследних
6 pmb
 
17.12.14
14:20
(5) где-то на ИТС есть статья. Переписывате запрос без виртуальной таблицы СрезПоследних
7 tixis
 
17.12.14
14:22
Всем спасибо, сейчас проверю все варианты
8 pmb
 
17.12.14
14:22
(7) убирай срез последних - без вариантов )
9 Chai Nic
 
17.12.14
14:23
Левое соединение с виртуальной таблицей == левое соединение с подзапросом == nested loop без вариантов == тормоза
10 Chai Nic
 
17.12.14
14:24
Пихай срез во временную таблицу и соединяй с ней по индексированному полю
11 cons74
 
17.12.14
14:35
(6)http://its.1c.ru/db/metod8dev#content:4208:hdoc

Оптимизация использования виртуальной таблицы СрезПоследних при работе с PostgreSQL

Проблема

При работе с PostgreSQL использование соединения с виртуальной таблицей СрезПоследних может приводить к существенному снижению производительности. Из-за ошибки оптимизатора может быть выбран неоптимальный план выполнения запроса.

Решение

Если в запросе используется соединение с виртуальной таблицей языка запросов "1С:Предприятия" СрезПоследних и запрос работает с неудовлетворительной производительностью, то рекомендуется вынести обращение к виртуальной таблице в отдельный запрос с сохранением результатов во временной таблице.
12 an-korot
 
17.12.14
14:38
странный запрос, обращаться 2 раза к 1 таблице вторым запросом внутри 1, удивляюсь почему скуэль не тормозит )) наверняка на несколько секунд задумывается...
сделай 2 запроса и обеденить все.
Основная теорема систематики: Новые системы плодят новые проблемы.