Первоначально порядок сортировки в таблицах определяется порядком их подцепки в условии Where главной логической таблицы (интерфейса или отчета с SQL-таблицей). Если же порядок неоднозначный (т.е. подцепка осуществляется по N полям, задающих часть индекса, т.е. N сегментов из M(N<M), которые присутствуют в нескольких индексах), то таблица будет индексирована по первому индексу, описанному в словаре, и его N сегментов совпадают с порядком подцепки. Чтобы явно указать индекс в этом случае, после имени физической таблицы в секции FROM в круглых скобках задают имя индекса: MyTable (MyTable01). Аналогично поступают и в том случае, когда на таблицу не наложено никаких ограничений в WHERE.
Пример1:
Код: Выделить всё
Create View
As Select *
From
KatSopr,
SpSopr,
KatOrg,
KatMC,
KatUsl
Where
((
Katsopr.NRec == SpSopr.cSopr And
KatSopr.cOrg == KatOrg.NRec And
SpSopr.cMcUsl == KatMC.NRec And
SpSopr.cMcUsl == KatUsl.NRec
));
В данном случае т.к. KatSopr не ограничена в логической таблице, то она будет индексирована по первому индексу словаря - т.е. по NRec (по индексу KatSopr01),по Nrec же будут индексированы таблицы KatOrg, KatMC и KatUsl. Но их индекс уже будет определяться тем, что в подцепке первым условием подцепки для них используется NRec, а это есть первые сегменты соответствующих индексов по Nrec (KatOrg01, KatMC01 и KatUsl01 соответственно).
Таблица же SpSopr будет индексирована по одному из индексов, первым сегментом которых является поле cSopr. Это индексы SpSopr03, SpSopr05, SpSopr06, SpSopr08 и т.д. По умолчанию система из этих индексов выбирает первый, который описан в словаре - это индекс SpSopr03, т.о. сортировка таблицы SpSopr будет осуществляться по полям cSopr+Npp.
Пример2:
Код: Выделить всё
Create View
As Select *
From
KatSopr,
SpSopr (SpSopr11),
KatOrg,
KatMC,
KatUsl
Where
((
Katsopr.NRec == SpSopr.cSopr And
KatSopr.cOrg == KatOrg.NRec And
SpSopr.cMcUsl == KatMC.NRec And
SpSopr.cMcUsl == KatUsl.NRec
));
Данная логическая таблица ничем не отличается от предыдущей, за исключением того, что теперь таблица SpSpor будет отсортирована по полям cSopr+cMcUsl+Npp, т.е. по индексу SpSopr11 (vs его описали в круглых скобках после имени таблицы).
Однако необходимо помнить, что явное указание индекса для таблицы и условие ее подцепки в WHERE должны быть взаимно корректными (т.е. в вышеприаедленных примерах нельзя явно задавать индекс, первым сегментом которого является поле, отличное от cSopr). В этом случае система скомпилирует все, но при инициализации данной лог.таблицы (в интерфейсе, отчете) пользователь получит сообщение об ошибке конфликта используемого индекса и условий ограничения на таблицу.