Создает индексный файл, содержащий один или более индексов для отображения и подключения табличных записей в определенном порядке.
![]() |
---|
Вы не можете создать первичный (primary) индекс командой INDEX. Если вы хотите создать первичный (primary) индекс, используя язык Visual FoxPro, используйте команды SQL CREATE TABLE или ALTER TABLE. |
![]() |
---|
Замена индексного ключевого поля изменяет относительную позицию для текущей записи в индексе. Следовательно, проявите осмотрительность, если вы выполняете такие действия, как, например, 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 и хранит их в индексном файле, который вы определите. Индексный файл не влияет на физический порядок хранения записей в таблице.
Замечание
Для автономного индексного файла (.idx) длина индексного ключа должна быть между 1 и 100 символами. Для сложного индексного файла длина индексного ключа должна быть между 1 и 240 символами.
Для некоторых последовательностей сортировки или при использовании двухбайтного набора символов (DBCS) каждый символ в индексном выражении использует два символа в индексном ключе. В этих случаях длина индексного выражения ограничивается от 50 до 120 символами соответственно.
Предостережение
Избегайте использовать RECNO( ) в индексных выражениях для таблицы буферизованного курсора. Поскольку RECNO( ) изменяется для новых записей, если они внесены с помощью TABLEUPDATE( ), может произойти разрушение индекса.
Более подробно об индексных выражениях смотрите Index Creation Based on Expressions and Considerations for Creating Index Expressions.
- TO IDXFileName
-
Определяет имя автономного индексного (.idx) файла для хранения одиночного индексного ключа, сгенерированного eExpression.
Совет
Вы можете не принимать во внимание расширение имени файла по умолчанию при включении различных расширений или при изменении расширения имени по умолчанию в конфигурационном файле Visual FoxPro. При создании индексных файлов соблюдайте стандартные правила Windows для присваивания имен файлов, которые включают длинные имена файлов.
Более подробно об индексных файлах смотрите Visual FoxPro Index Files.
- TAG TagName
-
Определяет имя или тэг для индекса, сгенерированного с помощью eExpression и хранящегося в составном индексном файле (.cdx). Имя тэга должно начинаться с буквы или подчеркивания (_) и может состоять из некоторой комбинации до 10 букв, цифр и символов подчеркивания.
Замечание
Количество тэгов в .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]
-
Определяет выражение для фильтра, при установке которого выбираются только те записи, которые соответствуют выражению фильтра.
Совет
Если lExpression может быть оптимизирован, Rushmore-технология оптимизирует FOR предложение в команде INDEX . Для достижения наилучших показателей используйте выражение, которое может быть оптимизировано в предложении FOR. Более подробно смотрите SET OPTIMIZE Command и Использование Rushmore- оптимизации запросов для ускорения доступа к данным.
Более подробно о выражениях фильтров смотрите How to: Filter Data.
- [COMPACT]
-
Создает компактный индексный (.idx) файл. Компактные .idx файлы небольшие и позволяют быстрый доступ.
Замечание
При создании сложного индексного (.cdx) файла нет необходимости включать COMPACT. Сложный индекс всегда компактный.
Более подробно смотрите How to: Create Less Frequently Used Indexes.
- [ASCENDING | DESCENDING]
-
Определяет порядок отображения и предоставления доступа к записям, проиндексированным в сложном индексном (.cdx) файле.
ASCENDING определяет индекс в порядке возрастания для вывода на экран и показа записей. По умолчанию Visual FoxPro показывает и предоставляет доступ к записям в порядке возрастания. Тем не менее, вы можете включить ASCENDING как напоминание о порядке показа записей.
DESCENDING определяет индекс в порядке убывания для вывода на экран и предоставления доступа к записям.
Note
Вы не сможете использовать DESCENDING, если создан автономный индексный файл (.idx); тем не менее, вы можете определить индекс в порядке убывания для использования .idx-файла в командах SET INDEX и SET ORDER. Более подробно смотрите SET INDEX Command и SET ORDER Command.
- [UNIQUE | CANDIDATE]
-
Создает уникальный индекс или индекс типа Candidate.
UNIQUE хранит соответствующий индексный ключ только для первой записи, которая соответствует определенному индексному выражению.
Индексный ключ хранится как ключ автономного файла (.idx) или как индексный тэг в сложном индексном файле (.cdx). Любые другие индексные ключи для записей, которые соответствуют индексному выражению, исключены из индексного файла.
Замечание
Использование 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 генерирует сообщение об ошибке.
Замечание
Индексы типа Candidate не позволяют дублирования в значениях полей. Если вы создаете индекс типа candidate для одного или нескольких полей, которые содержат дублированные значения, Visual FoxPro генерирует ошибку.
Более подробно об индексах типа candidate смотрите Visual FoxPro Index Types. Более подробно об индексных файлах смотрите Visual FoxPro Index Files.
- [ADDITIVE]
-
Сохраняет любые предварительно открытые индексные файлы. Если предложение ADDITIVE опущено, любые прежде открытые индексные файлы закрываются, кроме файла сложного структурного индекса (.cdx).
Замечание
Количество индексных файлов, которые вы можете открыть, лимитируется толькопамятью и системными ресурсами.В Visual FoxPro установка FILES в Config.sys определяет общее количество файлов, которые можно открыть.
- [BINARY]
-
Создает бинарный индекс. Более подробно о бинарных индексах смотрите Visual FoxPro Index Types.
Note
Если определено выражение индекса для eExpression, вы должны определить правильное логическое выражение, которое не оценивается в нулевое значение. Если индексное выражение для бинарного индекса изменено и оценивается в нулевое значение, Visual FoxPro генерирует ошибку.
Если используются бинарные индексы, вы не можете использовать предложение FOR, чтобы определить выражение для фильтра или ключи ASCENDING, DESCENDING, UNIQUE или CANDIDATE. Visual FoxPro не поддерживает команду SET ORDER, если установлен бинарный индексный тэг. Если вы пытаетесь установить бинарный тэг, Visual FoxPro генерирует ошибку, и текущий индекс остается в своей предшествующей установке. Visual FoxPro не поддерживает операции SEEK или автономный одинарный ключ (.idx) при индексации бинарных индексов.
Замечания
Структурный .cdx файл может перестать быть ассоциированным со своей таблицей, если не может быть установлено местоположение индексного файла, либо он удален, или переименован. Когда Вы открываете таблицу, которая имеет диссоциированный структурный .cdx файл, появляется диалоговое окно. Когда Вы щелкаете на кнопку Отмена в окне диалога, таблица не открывается.
![]() |
---|
Щелчок Ignore открывает таблицу; тем не менее, удаляется флаг заголовка таблицы, который указывает, что связанный структурный файл (.cdx) существует. |
![]() |
---|
Для того, чтобы снова ассоциировать структурный индексный .cdx- файл, выполните следующую команду и определите имя таблицы как TableName и имя неассоциированного структурного .cdx-файла как CDXFileName. |
![]() | |
---|---|
USE TableName INDEX CDXFileName |
Если таблица была модифицирована, убедитесь, что она проиндексирована снова.
Для того, чтобы получить количество записей, проиндексированных в течение процесса индексации, установите команду SET TALK в ON. Чтобы определить интервал записей, отображаемых при индексации, используйте команду SET ODOMETER. Более подробно смотрите SET TALK Command and SET ODOMETER Command.
Чтобы получать информацию об открытых индексных файлах, используйте DISPLAY STATUS Command. DISPLAY STATUS включает имена всех открытых индексных файлов, их типов, их индексных выражений, а также имя главного, или управляющего, индексного файла или тэга.Количество индексных файлов, которые вы можете открыть, лимитируется только объемом памяти и системных ресурсов.
Пример
Пример 1
Следующий пример закрывает все базы данных командой CLOSE DATABASES и открывает базу данных Visual FoxPro TestData.dbc командой OPEN DATABASE и таблицу Customer командой USE.
Команда INDEX создает автономный индексный файл (.idx) с названием Complist, на основе поля Company. Команда CLEAR очищает главное окно Visual FoxPro, а команда DISPLAY STATUS показывает информацию об индексном файле Complist.
![]() | |
---|---|
CLOSE DATABASES OPEN DATABASE (HOME(2) + 'Data\TestData') USE Customer INDEX ON Company TO Complist CLEAR DISPLAY STATUS |
Пример 2
Следующий пример закрывает все базы данных командой CLOSE DATABASES и открывает базу данных Visual FoxPro TestData.dbc командой OPEN DATABASE и таблицу Customer командой USE.
Команда INDEX создает автономный индексный файл (.idx) с именем CityComp как подстроку из первых пяти символов поля City и первых шести символов поля Company, используя функцию SUBSTR( ). Этот индексный файл упорядочивает записи в таблице первоначально в соответствии с полем City и field and повторно в соответствии с полем Company. Visual FoxPro очищает главное окно Visual FoxPro командой CLEAR, и показывает информацию об индексном файле CityComp командой DISPLAY STATUS.
![]() | |
---|---|
CLOSE DATABASES OPEN DATABASE (HOME(2) + 'Data\TestData') USE Customer INDEX ON SUBSTR(City,1,5) + SUBSTR(Company,1,6) TO CityComp CLEAR DISPLAY STATUS |
Пример 3
Следующий пример закрывает все базы данных командой CLOSE DATABASES и открывает базу данных Visual FoxPro TestData.dbc командой OPEN DATABASE и таблицу Customer командой USE.
Команда INDEX создает структурный составной индексный файл (.cdx) с двумя тэгами: на основе поля Address field с именем Address и на основе поля Company с именем Company. Если структурный составной индексный файл был предварительно создан для таблицы, второй тэг добавляется к существующему файлу.
![]() | |
---|---|
CLOSE DATABASES OPEN DATABASE (HOME(2) + 'Data\TestData') USE Customer INDEX ON company TAG company INDEX ON address TAG address CLEAR DISPLAY STATUS |
See Also
Ссылки
CANDIDATE( ) FunctionPRIMARY( ) Function
UNIQUE( ) Function
ATAGINFO( ) Function
CDX( ) Function
COPY INDEXES Command
COPY TAG Command
DELETE TAG Command
DESCENDING( ) Function
FOR( ) Function
INDEXSEEK( ) Function
KEY( ) Function
MDX( ) Function
NDX( ) Function
ORDER( ) Function
SORT Command
SYS(14) - Index Expression
SYS(21) - Controlling Index Number
SYS(22) - Controlling Tag or Index Name
SYS(2021) - Filtered Index Expression
TAG( ) Function
TAGCOUNT( ) Function
Другие ресурсы
Commands (Visual FoxPro)Working with Table Indexes