Реальный пример. ПУБ, Регистра Партии, измерение Поставка имеет тип документ - вид - неопределенный.
Надо получить партии по FIFO, для этого надо сделать JOIN к журналу, но в журнале только 9 символов в ID, а в в измерении регистра - 13. Раньше делал через RIHGT, теперь можно напрямую.
Вот пример до того:
Declare @PERIODR DateTime
SET @PERIODR = Convert(DateTime,'20111201',112)
SELECT
$TabR1.Счет AS Счет,
$TabR1.МестоХранения AS МестоХранения,
$TabR1.ТМЦ AS ТМЦ,
$TabR1.Поставка AS Поставка,
SUM($TabR1.ОстатокТовара) AS ОстатокТовара,
SUM($TabR1.Стоимость)
FROM
$РегистрИтоги.Партии AS TabR1 (NOLOCK)
LEFT OUTER JOIN _1SJOURN AS Сорт_Поставка (NOLOCK) ON (Сорт_Поставка.IDDOC = RIGHT($TabR1.Поставка,9))
WHERE
TabR1.PERIOD = @PERIODR
GROUP BY
$TabR1.Счет,
$TabR1.МестоХранения,
$TabR1.ТМЦ,
$TabR1.Поставка,
Сорт_Поставка.DATE_TIME_IDDOC
ORDER BY
$TabR1.Счет,
$TabR1.МестоХранения,
$TabR1.ТМЦ,
Сорт_Поставка.DATE_TIME_IDDOC
А вот после добавление столбца IDDOC13:
Declare @PERIODR DateTime
SET @PERIODR = Convert(DateTime,'20111201',112)
SELECT
$TabR1.Счет AS Счет,
$TabR1.МестоХранения AS МестоХранения,
$TabR1.ТМЦ AS ТМЦ,
$TabR1.Поставка AS Поставка,
SUM($TabR1.ОстатокТовара) AS ОстатокТовара,
SUM($TabR1.Стоимость)
FROM
$РегистрИтоги.Партии AS TabR1 (NOLOCK)
LEFT OUTER JOIN _1SJOURN AS Сорт_Поставка (NOLOCK) ON (Сорт_Поставка.IDDOC13 = $TabR1.Поставка)
WHERE
TabR1.PERIOD = @PERIODR
GROUP BY
$TabR1.Счет,
$TabR1.МестоХранения,
$TabR1.ТМЦ,
$TabR1.Поставка,
Сорт_Поставка.DATE_TIME_IDDOC
ORDER BY
$TabR1.Счет,
$TabR1.МестоХранения,
$TabR1.ТМЦ,
Сорт_Поставка.DATE_TIME_IDDOC
В первом случае понятно что запрос выполняется быстрее при наличии индекса по IDDOC13 + DATE_TIME_IDDOC на таблицу _1SJOURN, а можно еще и на $TabR1.Поставка сделать индекс - будет еще лучше.