Перестраивает открытые индексные файлы.

REINDEX обновляет все индексные файлы, открытые в выбранной рабочей области.

REINDEX [COMPACT]

Параметры

COMPACT

Преобразует нормальные единичные индексные (.idx) файлы в компактные .idx файлы.

Expand imageПримечания

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

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

NoteСовет

Для снижения нагрузки на сеть во время операции REINDEX, вы моежте использовать SYS(3050) - Set Buffer Memory Size для устнановки размера буффера памяти, способного вместить полную таблицу. Во время первого прохода, страница буфферируется локально и последующие проходы не пытаются прочесть буфферированные данные с удаленного компьютера.

Любые индексные файлы, созданные с ключевым словом UNIQUE команды INDEX или с SET UNIQUE ON сохраняют их UNIQUE статус во время реиндексирования.

Для переиндексирования с помощью команды REINDEX устаревших индексных файлов используйте приведенные ниже команды:

  CopyCode imageСкопировать код
USE TableName INDEX OutdatedIndexNames
REINDEX

Expand imageПример

In the following example, ISEXCLUSIVE( ) verifies that the customer table was opened for exclusive use. The table is not reindexed since the one in the current work area was not opened for exclusive use.

В приведенном ниже примере, проверяет, что таблица была открыта для эксклюзивного (монопольного) использования. Таблица не переиндексируется то тех пор, пока она не находится в выбранной рабочей области и не открыта для эксклюзивного (монопольного) использования.
  CopyCode imageСкопировать код
cExclusive = SET('EXCLUSIVE')
SET EXCLUSIVE OFF
SET PATH TO (HOME(2) + 'Data\')
OPEN DATA testdata  && открывает тестовую базу данных
USE Customer     && не открывается эксклюзивно (для монопольного использования)
USE Employee IN 0 EXCLUSIVE    && открывается  эксклюзивно (для монопольного использования)в другой рабочей области

IF ISEXCLUSIVE( )
 REINDEX  && может быть выполнено только при условии, что таблица открыта эксклюзивно (для монопольного использования)
ELSE
  WAIT WINDOW 'Таблица не открыта в монопольном режиме'
ENDIF

SET EXCLUSIVE &cExclusive

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