Сломал себе сегодня голову
есть запрос
SELECT
Номенклатура.code КодТовар,
Номенклатура.descr Наименование,
$ТабличныеЧастиПереоценок.Цена as ПоследняяЦена,
Подзапрос.ТипаВремя as ПоследняяПереоценка,
ЗоныЦен.descr as Зона
FROM $Справочник.Номенклатура as Номенклатура
LEFT OUTER JOIN (
SELECT
$ПереоценкаСтроки.Товар [ИДТовара],
$ШапкаПереоценка.ЗонаЦен [ИДЗоныЦен],
ПереоценкаСтроки.LINENO_ [НомерСтроки],
ПереоценкаСтроки.IDDOC ИДДокумента,
MAX(Журнал.DATE_TIME_IDDOC) as ТипаВремя
FROM
$ДокументСтроки.Переоценка AS ПереоценкаСтроки (NOLOCK)
INNER JOIN
_1SJOURN AS Журнал (NOLOCK) ON (ПереоценкаСтроки.IDDOC = Журнал.IDDOC)
INNER JOIN
$Документ.Переоценка ШапкаПереоценка ON (ШапкаПереоценка.IDDOC = ПереоценкаСтроки.IDDOC)
WHERE
(Журнал.closed = 5) and ($ШапкаПереоценка.КатегорияЦен = :ОсновнаяКатегорияЦен)
GROUP BY
$ПереоценкаСтроки.Товар,
$ШапкаПереоценка.ЗонаЦен,
ПереоценкаСтроки.LINENO_,
ПереоценкаСтроки.IDDOC
) as Подзапрос ON (Номенклатура.ID = Подзапрос.ИДТовара)
INNER JOIN
$Справочник.ЗонаЦен as ЗоныЦен ON (ЗоныЦен.ID = Подзапрос.ИДЗоныЦен)
INNER JOIN
$ДокументСтроки.Переоценка as ТабличныеЧастиПереоценок (NOLOCK) ON
(ТабличныеЧастиПереоценок.iddoc = Подзапрос.ИДДокумента) and (ТабличныеЧастиПереоценок.LINENO_ = Подзапрос.НомерСтроки)
WHERE
(Номенклатура.isfolder = 2) and
(Номенклатура.ismark = 0 )
Как бы в принципе запрос работает и выдает неоходимые данные (последний ценообразующий документ на товар)
есть несколько маленьких моментов
1. Enterprise Mamager в разделе показывает что процесс блокирует сам себя и поэтому запрос выполняется довольно долго - что то я видимо нахимичил с повторной выборкой их ТЧ Переоценок.
2. План выполнения запроса полказывает что самым узким местом оказалось условие isClosed у журнала
3. А также меня не покидает чувство что запрос не оптимизирован
Просьба: Пните пожалуйста в нужном направлении