Здравствуйте.
Нужно было хранить периодические значения на документ в разрезе Товар+Склад.
Сделал справочник:
Товар [Справочник.Номенклатура],
Склад [Справочник.МестаХранения],
Значение [Неопределенный],
Документ [Документ],
Тип [Перечисление],
НеИспользуется [Число(1)],
Основание [Документ],
Позиция [Строка(24)].
Сделал функции в sql для получения последнего значения на дату и на документ.
CREATE function GetValueByDoc(@tov char(9), @skl char(9), @type char(9), @doc char(9))
returns char(23)
begin
declare @val char(23)
set @val = ''
select top 1
@val = p.sp815
from sc822 as p (nolock)
where
p.sp813 = @tov
and p.sp814 = @skl
and p.sp817 = @type
and right(p.sp816, 9) = @doc
and p.sp818 = 0
order by p.sp820 desc
select @val = case left(@val, 1)
when 'N' then ltrim(right(@val, 22))
when 'D' then substring(@val, 2, 8)
else substring(@val, 7, 9)
end
select @val = case @val when ' ' then NULL else @val end
return @val
end
На все реквизиты (кроме Значение) установил признак сортировки, но чую, что в запросах эти индексы не использую. За 5 месяцев накопилось over1.600.000 записей. Надо сделать, чтобы выборка работала быстрее.
Подскажите как использовать индексы в запросах. Или они уже используются самим sql-ем и быстрее запрос не получится?