Создает индексный файл, содержащий один или более индексов для отображения и подключения табличных записей в определенном порядке.

NoteЗамечание

Вы не можете создать первичный (primary) индекс командой INDEX. Если вы хотите создать первичный (primary) индекс, используя язык Visual FoxPro, используйте команды SQL CREATE TABLE или ALTER TABLE.

Caution noteПредостережение

Замена индексного ключевого поля изменяет относительную позицию для текущей записи в индексе. Следовательно, проявите осмотрительность, если вы выполняете такие действия, как, например, REPLACE ALL или SCAN ... ENDSCAN, которые изменяют индекс для области. Это также относится к операциям REPLACE на индексах, созданных при помощи предложения FOR.

INDEX ON eExpression TO IDXFileName | TAG TagName [BINARY]
   [COLLATE cCollateSequence] [OF CDXFileName] [FOR lExpression]
   [COMPACT] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE]

Параметры

eExpression

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

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

NoteЗамечание

Для автономного индексного файла (.idx) длина индексного ключа должна быть между 1 и 100 символами. Для сложного индексного файла длина индексного ключа должна быть между 1 и 240 символами.

Для некоторых последовательностей сортировки или при использовании двухбайтного набора символов (DBCS) каждый символ в индексном выражении использует два символа в индексном ключе. В этих случаях длина индексного выражения ограничивается от 50 до 120 символами соответственно.

Caution noteПредостережение

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

Более подробно об индексных выражениях смотрите Index Creation Based on Expressions and Considerations for Creating Index Expressions.

TO IDXFileName

Определяет имя автономного индексного (.idx) файла для хранения одиночного индексного ключа, сгенерированного eExpression.

NoteСовет

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

Более подробно об индексных файлах смотрите Visual FoxPro Index Files.

TAG TagName

Определяет имя или тэг для индекса, сгенерированного с помощью eExpression и хранящегося в составном индексном файле (.cdx). Имя тэга должно начинаться с буквы или подчеркивания (_) и может состоять из некоторой комбинации до 10 букв, цифр и символов подчеркивания.

NoteЗамечание

Количество тэгов в .cdx-файле лимитируется только свободной памятью и дисковым пространством. Если .cdx-файл для таблицы уже существует и открыт,использование INDEX с TAG TagName добавляет тэг к открытому .cdx-файлу. Если вы создаете индексный тэг с определенным именем в идексном файле, Visual FoxPro добавляет тэг автоматически к табличному структурированному .cdx-файлу.

Более подробно об индексных файлах смотрите Visual FoxPro Index Files.

[COLLATE cCollateSequence]

Определяет порядок сортировки, отличающийся от установки по умолчанию,MACHINE. cCollateSequence должно быть правильным порядком сортировки Visual FoxPro.

Более подробно об установке порядка сортировки смотритеOptimizing International Applications и SET COLLATE Command.

[OF CDXFileName]

Определяет имя неструктурированного составного индексного (.cdx) файла для хранения индекса или тэга, который сгенерирован eExpression. При пропуске этого выражения создается структурированный .cdx-файл, а при включении - неструктурированный .cdx-файл.

Более подробно об индексных файлах смотрите Visual FoxPro Index Files.

[FOR lExpression]

Определяет выражение для фильтра, при установке которого выбираются только те записи, которые соответствуют выражению фильтра.

NoteСовет

Если lExpression может быть оптимизирован, Rushmore-технология оптимизирует FOR предложение в команде INDEX . Для достижения наилучших показателей используйте выражение, которое может быть оптимизировано в предложении FOR. Более подробно смотрите SET OPTIMIZE Command и Использование Rushmore- оптимизации запросов для ускорения доступа к данным.

Более подробно о выражениях фильтров смотрите How to: Filter Data.

[COMPACT]

Создает компактный индексный (.idx) файл. Компактные .idx файлы небольшие и позволяют быстрый доступ.

NoteЗамечание

При создании сложного индексного (.cdx) файла нет необходимости включать COMPACT. Сложный индекс всегда компактный.

Более подробно смотрите How to: Create Less Frequently Used Indexes.

[ASCENDING | DESCENDING]

Определяет порядок отображения и предоставления доступа к записям, проиндексированным в сложном индексном (.cdx) файле.

ASCENDING определяет индекс в порядке возрастания для вывода на экран и показа записей. По умолчанию Visual FoxPro показывает и предоставляет доступ к записям в порядке возрастания. Тем не менее, вы можете включить ASCENDING как напоминание о порядке показа записей.

DESCENDING определяет индекс в порядке убывания для вывода на экран и предоставления доступа к записям.

NoteNote

Вы не сможете использовать DESCENDING, если создан автономный индексный файл (.idx); тем не менее, вы можете определить индекс в порядке убывания для использования .idx-файла в командах SET INDEX и SET ORDER. Более подробно смотрите SET INDEX Command и SET ORDER Command.

[UNIQUE | CANDIDATE]

Создает уникальный индекс или индекс типа Candidate.

UNIQUE хранит соответствующий индексный ключ только для первой записи, которая соответствует определенному индексному выражению.

Индексный ключ хранится как ключ автономного файла (.idx) или как индексный тэг в сложном индексном файле (.cdx). Любые другие индексные ключи для записей, которые соответствуют индексному выражению, исключены из индексного файла.

NoteЗамечание

Использование UNIQUE не предохраняет от дублирования записей при вводе в таблицу. Это только предохраняет от дублирования индексного ключа при добавлении к индексному файлу. When a duplicate record is changed so that its index key is changed for an active UNIQUE index or index tag, the index or index tag is updated. However, Visual FoxPro cannot display or access the next duplicate record with the original index key until you use the REINDEX command to reindex the file. Более подробно смотрите REINDEX Command.

Использование UNIQUE идентично выполнению SET UNIQUE ON перед запуском INDEX или REINDEX. Более подробно смотрите SET UNIQUE Command.

CANDIDATE хранит индексный тэг только в структурном составном индексном файле (.cdx); в противном случае Visual FoxPro генерирует сообщение об ошибке.

NoteЗамечание

Индексы типа Candidate не позволяют дублирования в значениях полей. Если вы создаете индекс типа candidate для одного или нескольких полей, которые содержат дублированные значения, Visual FoxPro генерирует ошибку.

Более подробно об индексах типа candidate смотрите Visual FoxPro Index Types. Более подробно об индексных файлах смотрите Visual FoxPro Index Files.

[ADDITIVE]

Сохраняет любые предварительно открытые индексные файлы. Если предложение ADDITIVE опущено, любые прежде открытые индексные файлы закрываются, кроме файла сложного структурного индекса (.cdx).

NoteЗамечание

Количество индексных файлов, которые вы можете открыть, лимитируется толькопамятью и системными ресурсами.В Visual FoxPro установка FILES в Config.sys определяет общее количество файлов, которые можно открыть.

[BINARY]

Создает бинарный индекс. Более подробно о бинарных индексах смотрите Visual FoxPro Index Types.

NoteNote

Если определено выражение индекса для eExpression, вы должны определить правильное логическое выражение, которое не оценивается в нулевое значение. Если индексное выражение для бинарного индекса изменено и оценивается в нулевое значение, Visual FoxPro генерирует ошибку.

Если используются бинарные индексы, вы не можете использовать предложение FOR, чтобы определить выражение для фильтра или ключи ASCENDING, DESCENDING, UNIQUE или CANDIDATE. Visual FoxPro не поддерживает команду SET ORDER, если установлен бинарный индексный тэг. Если вы пытаетесь установить бинарный тэг, Visual FoxPro генерирует ошибку, и текущий индекс остается в своей предшествующей установке. Visual FoxPro не поддерживает операции SEEK или автономный одинарный ключ (.idx) при индексации бинарных индексов.

Expand imageЗамечания

Структурный .cdx файл может перестать быть ассоциированным со своей таблицей, если не может быть установлено местоположение индексного файла, либо он удален, или переименован. Когда Вы открываете таблицу, которая имеет диссоциированный структурный .cdx файл, появляется диалоговое окно. Когда Вы щелкаете на кнопку Отмена в окне диалога, таблица не открывается.

Caution noteCaution

Щелчок Ignore открывает таблицу; тем не менее, удаляется флаг заголовка таблицы, который указывает, что связанный структурный файл (.cdx) существует.

NoteСовет

Для того, чтобы снова ассоциировать структурный индексный .cdx- файл, выполните следующую команду и определите имя таблицы как TableName и имя неассоциированного структурного .cdx-файла как CDXFileName.

  CopyCode imageCopy Code
USE TableName INDEX CDXFileName

Если таблица была модифицирована, убедитесь, что она проиндексирована снова.

Для того, чтобы получить количество записей, проиндексированных в течение процесса индексации, установите команду SET TALK в ON. Чтобы определить интервал записей, отображаемых при индексации, используйте команду SET ODOMETER. Более подробно смотрите SET TALK Command and SET ODOMETER Command.

Чтобы получать информацию об открытых индексных файлах, используйте DISPLAY STATUS Command. DISPLAY STATUS включает имена всех открытых индексных файлов, их типов, их индексных выражений, а также имя главного, или управляющего, индексного файла или тэга.Количество индексных файлов, которые вы можете открыть, лимитируется только объемом памяти и системных ресурсов.

Expand imageПример

Expand imageПример 1

Expand imageПример 2

Expand imageПример 3

Expand imageSee Also