Тема: | 2.3.Индексирование: понятие индекса, типы индексных файлов. Создание, активация и удаление индекса. Переиндексирование |
Цель: | Научиться создавать простые и сложные индексы, активизировать индекс, перестраивать индексы, добавлять и удалять индексы |
Оборудование: Программное обеспечение: | IBM совместимый персональный компьютер Операционная система WINDOWS 7, Visual FoxPro 9.0 |
Общие теоретические сведения
Индексы -это заранее выбранные и распределенные в указанном вами порядке ссылки на записи таблицы. Индексы хранятся в отдельном файле либо с расширением.idx, либо с расширением.cdx
В idx-файле может храниться только один индекс, и длина индексного выражения не может превышать 100 символов. Cdx-файлы позволяют хранить несколько индексов с длиной индексного выражения до 240 символов. Само индексное выражение может представлять
собой имена полей и функции, производящие какие-либо действия над именами полей.
Основная команда, служащая для создания индексных файлов, - INDEX.
INDEX ON <Выражение> ТО <Имя_idх-файла> ê TAG <Имя_тега> [OF <Имя_сdх-файла>]
[FOR <Условие >] [COMPACT] [ASCENDING ê DESCENDING]
[UNIQUE ê CANDIDATE] [ADDITIVE][BINARY]
§ Выражение> - индексное выражение;
§ <Имя_idх-файла> - имя файла для хранения индекса (указывается, если создается одиночный индекс в idx-файле);
§ <Имя_тега> - имя индекса внутри комплексного индексного cdx-файла (указывается, если создается индекс внутри cdx-файла);
§ <Имя_сdх-файла> - имя файла для хранения индекса (указывается, если создается индекс в cdx-файле);
§ <Условие> - логическое условие для отбора записей. В индекс войдут только те записи, которые удовлетворяют условию.
§ COMPACT - создается компактный Idx-файл.
§ ASCENDING ê DESCENDING - направление сортировки. Если указано DESCENDING, то по убыванию. Если ничего не указывать, то сортировка происходит по возрастанию;
§ UNIQUE ê CANDIDATE - определение режима включения в индексный файл записей с повторяющимися ключевыми полями. Если UNIQUE, в индексный файл будет занесен только индекс первой из нескольких записей с одинаковыми ключевыми полями;
§ ADDITIVE - при создании индекса индексные файлы, уже открытые для данной таблицы, продолжают оставаться открытыми;
§ BINARY - создание бинарных индексов.
Использование индексов
Для того чтобы упорядочить записи по готовым индексам, можно при открытии таблицы указать соответствующий индексный файл. Для idx-файлов этого достаточно, а для cdx-файлов требуется еще указать тег индекса (имя нужного индекса внутри cdx-файла), по которому происходит упорядочивание.
В простейшем случае для idx-файлов команда имеет вид:
USE <Имя_таблицы> INDEX <Имя_idх-файла>
Для cdx-файлов есть два варианта.
Если при индексировании вы задали имя, совпадающее с именем таблицы, индексный файл откроется автоматически при открытии таблицы. То есть в простейшем случае вы используете команду
USE <Имя_таблицы> ORDER TAG <Имя_тега>
Если при индексировании вы задали имя, не совпадающее с именем таблицы, придется принудительно открывать cdx-файл, а затем указывать тег, по которому произойдет сортировка. Можно это сделать либо с помощью двух раздельных команд
USE <Имя_таблицы> INDEX <Имя_сdх-файла>
SET ORDER TO TAG <Имя_тега>
либо посредством одной, но более сложной команды
USE <Имя_таблицы> INDEX <Имя_сdх-файла> ORDER TAG <Имя_тега>
Ход работы:
Задание 1. Создать два одиночных индекса (idx-файлы) для таблицы Stuff (список должностей) и комплексный индекс (cdx-файл) для таблицы Persons (список сотрудников).
Последовательность действий для этого приведена ниже.
1. Смените текущую папку на созданную вами ранее папку.
2. Выполните в окне Commandкоманду USE Stuff
3. Индексировать будем по полю ID. Выполните в окне Commandкоманду
INDEX ON ID TO ID_Stuff.
4. Убедитесь, что записи в таблице расположены в соответствии с возрастанием значений поля ID и в папке образовался файл Id_stuff.idx. Если в окне с таблицей оперативно не обновился порядок строк, щелкните мышью в любом месте этого окна, чтобы оно стало активным.
5. Создадим еще один индекс по полю SUM, но при этом поставим на записи фильтр по суммам. Пусть в индекс попадут только записи с суммами, которые меньше 20000
(SUM < 20000.00). Выполните в окне Commandкоманду