Создание индексов
Основная команда, служащая для создания индексных файлов, - 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, содержащие индексы.