При создании индекса, вы предоставляете выражение, которое содержит имена полей, определяющее порядок, в котором должны быть организованы записи. Visual FoxPro создает индексный ключ для каждой записи в таблице, основанный на определенном вами индексном выражении и хранит индексные ключи в индексных файлах. Индексный файл хранит и обрабатывает указатели на записи в табличном файле (.dbf) и организует их в соответствии со значениями индексных ключей. Индексный файл является отдельным файлом, но связан с табличным .dbf-файлом.

Visual FoxPro поддерживает приведенные далее типы индексных файлов: структурный составной индексный файл (structural compound index (.cdx)), неструктурный составной индексный файл (nonstructural compound index (.cdx)), а также самостоятельные индексные файлы (standalone index (.idx)). Структурные и неструктурные .cdx-файлы содержат множественные индексы, которые имеют имена или тэги, которые идентифицируют их, тогда как самостоятельный индексный .idx-файл содержит  только единичный индекс.

На приведенном ниже рисунке показан .cdx file с тремя индексными именами или тэгами. Два индексных тэга, emp_id и last_name, представляют собой индексы, основанные на единичных полях. Индексный тэг, cntry_last, организует записи, используя простое выражение, основанное на двух полях.

.cdx-файл, содержащий множество тэгов, которые представляют множество сценариев упорядочивания записей


cdx Tags Order Scenarios

В приведенной ниже таблице суммированы типы индексных файлв, используемый в Visual FoxPro, а также способы их наименования, tчисло индексных ключей, которые они могут содержать и ограничения для каждого по длине символьного выражения.

Типы индексных файлов Visual FoxPro
Тип индексного файла Описание Содержит Ограничения

Структурные составные индексные файлы

Structural compound index (.cdx)

Автоматически открываются и закрываются при открытии и закрытии таблиц.

Используются теже базовые имена, что и имена табличных файлов.

множество индексных ключей

в 240-символов на оцениваемом выражении

Неструктурые составные индексые файлы Nonstructural compound index (.cdx)

Должен быть открыт эксклюзивно.

Используются имена, отличные от базовых имен табличных файлов и определяются пользователем.

множество индексных ключей

в 240-символов на оцениваемом выражении

Самостоятельные индексные файлы

 Standalone index (.idx) files

Должен быть открыт эксклюзивно.

Используются имена, отличные от базовых имен табличных файлов и определяются пользователем.

Единичный индексный ключ

в 100-символов на оцениваемом выражении

Структурые составные индексные файлы

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

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

NoteЗамечание

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

Неструктурые составные индексные файлы

Неструктурные индексные .cdx-файлы хранят множество индексов, которые в отличие от структруных индексов, нечасто используются. Вы можете использовать эти файлы, когда вы желаете создать множество индексов для специальных целей, но не желаете, чтобы приложение обслуживало их на длительной основе. Имена неструктурных индексных файлов всегда отличаются от базовых имен таблиц и определяются пользователем.

Напримре, предположим, что ваше приложение содержит специальный набор отчетов, которые анализируют данные на основе полей, которые в нормальном ходе исполнения приложения не индексированы. Вы можете создать неструктурных индексный .cdx-файл, содержащий подходящие для этих целей индексы, запустить в работу отчеты, а затем удалить неструктурные индексные файлы.

NoteЗамечание

В противоположность структурным индексным файлам, которые открываются автоматически каждый раз, когда вы открываете таблицу, ассоциированную с ними, вы должны сами открыть неструктурный индексный файл эксклюзивно, используя команду SET INDEX или с помощью включения опции INDEX в состав команды USE. Для получения более подробной информации смотрите описание команд SET INDEX и USE.

Самостоятельные индексные файлы

Доступные, главным образом, для совместимости с более ранними версиями Visual FoxPro, самостоятельные индексные .idx-файлы хранят единичный индексный ключ, который используется либо временно, либо не часто. Вы можете использовать такие файлы, как временные инедксы, путем их создания или реиндексирования уже имеющихся до их использования в конкретной задаче. Самостоятельные индексные .idx-файлы всегда имеют свои собственные имена, отличные от базовых имен табличных (.dbf)-файлов и определяются пользователем.

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

Смотрите также