Например простой тестовый запрос
|SELECT
| TablProdaz.Товар as [Товар $Справочник.Номенклатура]
| ,SUM(TablProdaz.Количество) as Количество
| ,SUM(TablProdaz.Себестоимость) as Себестоимость
| ,SUM(TablProdaz.ПродСтоимость) as ПродСтоимость
|
|FROM
| (
| SELECT
| $РегПродажи.Товар as Товар,
| $РегПродажи.Клиент as Клиент,
| $РегПродажи.Фирма as Фирма,
| $РегПродажи.Склад as Склад,
| $РегПродажи.Количество as Количество,
| $РегПродажи.Себестоимость as Себестоимость,
| $РегПродажи.ПродСтоимость as ПродСтоимость,
| РегПродажи.IDDoc as Док
| FROM
| $Регистр.Продажи as РегПродажи
| WHERE (РегПродажи.Date BETWEEN :НачДата~~ AND :КонДата~~)
| AND($РегПродажи.Товар=:ВыбНоменкл) // этого условия нет, когда по всем товарам
|) as TablProdaz
|GROUP BY Товар
На измерение Товар регистра Продажи повесим "отбор движений"
Результаты замеров :
_________________________________
С индексом
По выб товару : 0.115с
По всем товарам : 0.426с
_________________________________
Без индекса
По выб товару : 0.125с
По всем товарам : 0.435с
_________________________________
Описание поля таблицы движений при установке индекса
#-----Fields-------
F=SP5227 |(P)Товар
#----Indexes------
I=VIA5227 |VIA5227 |0 |SP5227,DATE,TIME,IDDOC,LINENO,ACTNO
________________________________
Как видно от установки индекса время выполнения практически не влияет.
Это тестовый пример. В реальной базе также никаких отличий не нашел.
Особенно это плохо из за с таблицы Констант
(Индекс : ID,OBJID... ) и 1SJOURN.
В Fox е можно в процедурах указывать индекс. Может и здесь как то можно?