Создание индексов

Основная команда, служащая для создания индексных файлов, - INDEX.

>    <Выражение> - индексное выражение;

>    <Имя_Дс1х-файла> - имя файла для хранения индекса (указывается, еслисоздается одиночный индекс в idx-файле);

>    <Имя_тега> - имя индекса внутри комплексного индексного cdx-файла(указывается, если создается индекс внутри cdx-файла);

>    <Национальная_сортировка> - необязательный параметр, указывающий,как производить сортировку символьных полей с национальными кодировками. Возможные значения см. в раскрывающемся списке Collatingsequence (Последовательность сортировки) на вкладке Data (Данные):Tools (Инструменты) > Options (Параметры);

>    <Имя_^х-файла> - имя файла для хранения индекса (указывается, еслисоздается индекс в cdx-файле);

>    <Условие> - логическое условие для отбора записей. В индекс войдуттолько те записи, которые удовлетворяют условию. Эта возможность позволяет выделять из большого количества записей только подмножествос необходимыми характеристиками. Физически в таблице все записиостанутся, но при работе с индексами покажутся только удовлетворяющие условию записи;

>    COMPACT - создается компактный idx-файл. Для cdx-файла этот параметрзначения не имеет, так как он всегда создается компактным;

>    ASCENDING I DESCENDING - направление сортировки. Если указаноDESCENDING, то по убыванию. Если ничего не указывать, то сортировка происходит по возрастанию;

>    UNIQUE I CANDIDATE-определение режима включения в индексный файлзаписей с повторяющимися ключевыми полями. Если UNIQUE, в индексный файл будет занесен только индекс первой из нескольких записей содинаковыми ключевыми полями;

>    ADDITIVE - при создании индекса индексные файлы, уже открытые дляданной таблицы, продолжают оставаться открытыми;

>    BINARY - создание бинарных индексов. При этом не поддерживаютсяпараметры FOR, ASCENDING, DESCENDING, UNIQUE и CANDIDATE. Для бинарных индексов не поддерживаются команды SET ORDER и SEEK.

Попробуем создать индекс для таблиц нашего примера (список сотрудникови должностей). Создадим для списка должностей два одиночных индекса (idx-файлы), а для списка сотрудников - комплексный индекс (cdx-файл). Последовательность действий для этого приведена ниже.

1.    Смените текущую папку, выполнив в окне Command команду

CD ?

Откроется окно, в котором нужно найти созданную нами ранее папкуexample.

2.    Выполните в окне Command команду

Если Visual FoxPro выдаст ошибку, значит, таблица в текущей панке ненайдена, следует закрыть окно с ошибкой щелчком мышью по кнопкеОК и вернуться к п.1. При успешном открытии таблицы никакого сообщения не появится. Проверить, что таблица открылась, нужно, выполнив команду BROWSE. Окно с именем таблицы в заголовке появится наэкране.

3.    Индексировать будем по полю ID. Выполните в окне Command команду

4.    Убедитесь, что записи в таблице расположены в соответствии с возрастанием значений поля ID и в папке example образовался файл id_staff.idx.Если в окне с таблицей оперативно не обновился порядок строк, щелкните мышью в любом месте этого окна, чтобы оно стало активным.

5.    Создадим еще один индекс по полю SUM, но при этом поставим на записи фильтр по суммам. Пусть в индекс попадут только записи с суммами,которые меньше 20000 (SUM < 20000.00). Выполните в окне Commandкоманду

6.    Убедитесь, что записи в таблице расположены в соответствии с возрастанием значений поля SUM, записей с суммами больше или равными20000 в таблице нет, в папке example образовался файл su_staff.idx. Еслив окне с таблицей оперативно не обновился порядок строк, щелкнитемышью в любом месте этого окна, чтобы оно стало активным.

7.    Откроем в другой рабочей области таблицу persons. Для этого перейдемв свободную (не занятую открытой таблицей) рабочую область, используя команду

Откроем таблицу persons с помощью команды

Если Visual FoxPro выдаст ошибку, значит, таблица в текущей папке ненайдена, следует закрыть окно с ошибкой щелчком мышью по кнопке ОКи выполнить команду USE ?. В результате откроется окно для выбора файла. Найдите в папке example файл persons.dbf и щелкните по нему, а затем по кнопке ОК. При успешном открытии таблицы никакого сообщения не появится. Проверить, что таблица открылась, нужно, выполнивкоманду BROWSE. Окно с именем таблицы в заголовке появится на экране.

8.    Один индекс создадим по полю NAME, а другой по полю ID. Для этогосначала выполним в окне Command команду

Здесь NAME - имя поля, по которому строится индекс,

NAMES - имя индекса в cdx-файле,

PERSONS - имя cdx-файла.

9.    Убедитесь, что записи в таблице расположились в соответствии с возрастанием значений поля NAME и в папке example образовался файл persons.cdx.Если в окне с таблицей оперативно не обновился порядок строк, щелкнитемышью в любом месте этого окна, чтобы оно стало активным.

10.    Создадим индекс по полю ID. Для этого выполним в окне Command команду

Здесь ID - имя поля, по которому строится индекс,

IDS - имя индекса в cdx-файле,

PERSONS - имя cdx-файла.

11.    Убедитесь, что записи в таблице расположились в соответствии с возрастанием значений поля ID. Если в окне с таблицей оперативно не обновился порядок строк, щелкните мышью в любом месте этого окна, чтобыоно стало активным.

12.    Закроем обе таблицы, используя команду

Если вы выполнили успешно все шаги, перечисленные выше, у вас получатся две проиндексированные таблицы. В папке example появятся файлыid__staff.idx, su_staff.idx и persons.cdx, содержащие индексы.