Практическое занятие 4 Индексирование таблиц

Тема: 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команду

Наши рекомендации