Новости



Visual FoxPro 9 позволяет создавать ещё более производительные приложения баз данных.
Двадцатиление FoxPro! Microsoft принимает поздравления.
Visual FoxPro Toolkit for .NET - более 225 функций VFP 7.0, для языков .NET (подробнее)

Команда INDEX

См. также Пример

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

Синтаксис

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

Параметры

eExpression

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

Замечание В качестве eExpression можно также использовать (хотя это и не рекомендуется) переменную памяти, э емент массива, поле или выражение поля из таблицы в другой рабочей области. В вы ажениях индекса нельзя задавать одни memo-поля; их следует комбинировать с д угими символьными выражениями. При обращении к индексу, содержащему переменную и и поле, которых больше не существует или которые не удается найти, Visual FoxPro выдает сообщение об ошибке.

Если в выражении индекса задано поле и перед ним стоит псевдоним таблицы или уква, обозначающая рабочую область, Visual FoxPro выдаст сообщение об ошибке. Несмотря на то, что это не мешает оптимизировать предложения FOR по технологии Rushmore, настоятельно рекомендуется избегать использования полей с псевдонимами при создании индексов. В некоторых случаях (команда USE ... AGAIN, запросы SQL и т.п.) таблице автоматически назначается другой псевдоним, что может вызвать еправильное обновление или применение индекса. Подробнее о технологии Rushmore см. главу 17 " Оптимизация приложений" Руководства разработчика.

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

Возможно создать индекс с нулевой длиной. Такой индекс сгенерирует ошибку.

TO IDXFileName

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

TAG TagName [OF CDXFileName]

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

Многоключевые файлы составных индексов всегда являются компактными. При созда ии файла компактного индекса нет необходимости задавать ключевое слово COMPACT. Имена файлов составных индексов получают расширение .CDX.

Можно создавать составные индексы двух типов: структурные и неструктурные.

Файлы структурных составных индексов

Чтобы создать файл структурного составного индекса, достаточно задать предложе ие TAG TagName, опустив при этом предложение OF CDXFileName. Файл структурного составного индекса всегда имеет то же базовое имя, что и таблица, и автоматически открывается при открытии таблицы.

Если файл структурного составного индекса таблицы нельзя найти или если он был удален или переименован, то при попытке открыть таблицу появится диалоговое ок о. Если нажать в нем кнопку Cancel (это предлагается сделать по умолчанию), та лица не будет открыта. Если нажать Ignore, таблица откроется и в ее заголовке удет сброшен флаг, указывающий на наличие связанного с данной таблицей файла структурного составного индекса.

Совет Чтобы вновь сопоставить с таблицей структурный составной индекс, который потерял с ней связь, выдайте следующую команду:

USE TableName INDEX CDXFileName

Здесь CDXFileName представляет собой имя отсоединившегося структурного составного индекса. Не забудьте заново проиндексировать таблицу, если она за это время была модифици ована.

Файл неструктурного составного индекса

Чтобы создать файл неструктурного (независимого) составного индекса, задайте п едложение OF CDXFileName после TAG TagName. Файл неструктурного составного индекса, в отличие от структурного, должен яв о открываться с помощью команды SET INDEX или команды USE с предложением INDEX.

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

FOR lExpression

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

Технология Rushmore оптимизирует команду INDEX ... FOR lExpression, если lExpression является оптимизируемым выражением. В целях достижения наилучшей производите ьности рекомендуется использовать в предложении FOR оптимизируемое выражение. Подробнее об этом см. темы SET OPTIMIZE и Основы технологии Rushmore и главу 17 " Оптимизация приложений" Руководства разработчика.

COMPACT

Предложение COMPACT создает компактный файл .IDX.

ASCENDING

Задает возрастающий порядок для файла .CDX. По умолчанию теги .CDX создаются в возрастающем порядке (ASCENDING можно включить как напоминание о порядке ин екса). Таблицу можно индексировать в обратном порядке, включив предложение DESCENDING.

DESCENDING

Задает убывающий порядок для файла .CDX. Предложение DESCENDING нельзя за авать при создании файлов индексов .IDX. Впрочем, убывающий порядок для файла ин екса .IDX можно задать с помощью команд SET INDEX и SET ORDER.

UNIQUE

Указывает, что в файл .IDX или в тег .CDX включается только первая запись с ко кретным значением ключа индекса. Предложение UNIQUE можно использовать для того, чтобы предотвратить отображение или доступ к повторяющимся записям. Все записи, добавленные с повторяющимися ключами индекса, исключаются из файла индекса. Применение опции UNIQUE в команде INDEX идентично выполнению команды SET UNIQUE ON перед выдачей команды INDEX или REINDEX.

Когда активен индекс или тег индекса с опцией UNIQUE и повторяющаяся запись изменяется таким образом, что это приводит к изменению ее ключа индекса, индекс и и тег индекса обновляется. Однако следующую повторяющуюся запись с первоначаль ым ключом индекса нельзя будет отобразить или обработать до тех пор, пока вы е переиндексируете файл командой REINDEX.

CANDIDATE

Создает тег структурного индекса-кандидата. Ключевое слово CANDIDATE можно за авать только при создании тега структурного индекса; в противном случае Visual FoxPro сгенерирует сообщение об ошибке.

Тег индекса-кандидата предотвращает появление повторящихся значений в поле или в комбинации полей, заданных в выражении индекса eExpression. Термин "кандидат" обозначает тип индекса; имеется в виду, что такой индекс ассматривается в качестве "кандидата" на роль первичного индекса, раз он в состоянии запретить повторяющиеся значения.

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

Подробнее о тегах индексов-кандидатов и первичных индексов см. тему Установка первичного индекса или индекса-кандидата и в главе 7 "Работа с таблицами" Руководства разработчика.

ADDITIVE

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

Комментарии

Если таблица обладает файлом индекса, то выражение индекса определяет порядок отображения записей таблицы и доступа к ним. На физический порядок размещения записей в таблице файл индекса не влияет.

Если установка SET TALK имеет значение ON, Visual FoxPro сообщает о том, ско ько записей проиндексировано в ходе процесса индексации. Интервал, с которым ото ражается количество записей во время индексирования, можно задать с помощью команды SET ODOMETER.

Команда DISPLAY STATUS позволяет отобразить дополнительную информацию об откр тых файлах индексов. В эту информацию входят имена всех открытых файлов ин ексов, их типы (структурный, .CDX, .IDX), их выражения индекса и последовательности сортировки, а также имя главного файла индекса или главного тега.

Количество файлов индексов (.IDX или .CDX), которые вы можете открыть, огра ичивается только объемом памяти и имеющимися системными ресурсами. В FoxPro для MS-DOS и Visual FoxPro общее число файлов, которые можно открыть, определяется установкой FILES в файле конфигурации MS-DOS CONFIG.SYS. Подробнее об установке FILES см. документацию по MS-DOS.

Типы индексов

В Visual FoxPro можно создавать файлы индексов двух типов:

fox90000.gif Файлы составных индексов .CDX, которые состоят из множества элементов индекса, называемых тегами

fox90000.gif Файлы индексов .IDX, каждый из которых содержит только один элемент индекса

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

Совет Поскольку файл структурного составного индекса открывается автоматически вместе с таблицей, этот тип индекса рассматривается как предпочтительный.

С помощью предложения COMPACT вы можете создавать файлы компактных индексов .IDX. Файлы составных индексов всегда являются компактными.

Если вы работаете с одними и теми же файлами и в Visual FoxPro, и в FoxBASE+ и и FoxBASE+для Macintosh, вам следует воспользоваться файлами некомпактных ин ексов .IDX. В противном случае при построении файлов .IDX задайте предложение COMPACT, чтобы задействовать технологию Rushmore Visual FoxPro.

Порядок индексов и их обновление

Порядок отображения и обработки таблицы контролируется только одним файлом ин екса (главным файлом индекса) или тегом (главным тегом). Некоторые команды (нап имер, SEEK) используют главный файл индекса или тег при поиске записей. Однако при внесении изменений в таблицу обновляются все открытые файлы индексов .IDX и .CDX. Главный файл индекса или главный тег можно задать с помощью предложения INDEX команды USE или с помощью команд SET INDEX и SET ORDER.

Пользовательские функции

Хотя в выражении индекса допускается пользовательская функция, эти функции не екомендуется использовать в выражении индекса. Пользовательская функция в вы ажении индекса приводит к увеличению времени создания или обновления индекса. К оме того, она может помешать проведению обновлений индекса.

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



Новое на сайте

  • Обновлен портфель программиста

    Добавлены: Установка HTML Help (Создание справочной системы), Imagedit.zip - Графический редактор ( ico и bmp), Библиотека локализации HTML Help (Русский)
  • Новые примеры программ

    Установка библиотек, Игровая программа "Охота на лис", Установка библиотек "Охота на лис", plastic -"Платежки", Библиотеки (на FPD26), platan -"Платежки" (на Clipper 5.2)
  • Обновленна справка

    Подсказки, технология программирования и использование Visual FoxPro. Команды, функции, операторы, объекты, свойства, события и методы.